-
-
Notifications
You must be signed in to change notification settings - Fork 135
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Documentation #15
Comments
Hello and thanks for the fantastic boilerplate. I am using it for a starter point for my own project and currently testing with minikube locally.
As you can see with the current script it's impossible to see which chart specifically failed. Do you observe the same behavior by any chance ? As soon as I have some decent workaround for the hardcoded charts I can create a PR, meanwhile I would appreciate if you had some ideas how to make those dependencies more flexible instead of tgz packages in the repo. |
Hi, Thank you for the great repo. I think it has a lot of potential but I think it has a steep learning curve. I would like to ask for an architectural documents, one that shows the components and one for the data flow. Also some docs about AWS ECR would be nice. I was able to generate images, tag and upload them to ECR but couldn't make k8s pull the images from ECR, I am guessing due to some docker-secret thing. Please keep up the great work |
Hi @hmersin, yes if your docker registry is private you need to add secret to your k8s so it can pull images as to brief explanation for the architectural concepts I can list some key points
the boilerplate comes with two micro services examples api allows to dispatch commands following cqrs pattern and exposes data to ui using view model, request flow would look as follow: dispatch command request -> command handler -> aggregate root -> event store -> event handler later on the data can be queried via api using desired persistence model
Directory structure:
boilerplate setup should be easy enough to follow the flow, I hope its not as hard to understand as it might seem |
Thank you for the super fast response and the architectural explanation. When I run Again thanks for the great work, |
@hmersin ohh yea very possible that is missing |
Hello, I'm also a bit confused about how a user is registered with email or is this not implemented? p.s. Love the boilerplate, I hope to use it in a project if I can get the hang of it. |
@luisliz let me answer about user registration first: Ofc this is only a boilerplate and I did it this way because it seems kind of trendy nowadays to do so. If needed it shouldn't be hard to change/extend to a normal email/password login process. And yes it does work right now. k8s setup comes with dev mailbox https://github.com/maildev/maildev which is preinstalled in the go-api-bilerplate namespace. So here we come to the first question how to run it locally. To do so ideally you have some Kubernetes cluster, docker for desktop comes with k8s local coaster which works great. after that you can simply follow readme file steps https://github.com/vardius/go-api-boilerplate#quick-start which will guide you how to deploy this boilerplate to you local k8s cluster. as @hmersin mentioned earlier #15 (comment) there is one requirement missing for web service which I added here 86b2aac once you get it to run you can enter dev mailbox via web ui As to debugging/developing code locally the way I usually do it is have a develop version running on my cluster and then the service I am working on I simply run locally via If you want to override default env variables from config you can do it as follow Let me know if you have further question or my explanation is not enough, I am happy to try and explain even further. If you find it not working at the first time you might want to open api request in a new tab and make browser accept self signed certificate. |
Thank you very much! |
we should put commands into application layer , domain layer should know nothing about transaction and db |
@xtay315 why commands ? command are something you want system to do, and I believe they should be kept in the domain layer I think we could move command handlers to application layer, but definitely not commands itself |
commands are simply a DTOs, it is not a domain concept. when a command go into domain layer , you should translate it into domain concept (entity, vo, or agg). a command just the contract/interface/api of application facade. |
Could you maybe do a simple PR ? Would be much easier for me to picture things in the head while reading the code |
@vardius I interesting in pipeline of development. What is your development setup and how do you start and restart the service you are currently working on? |
This is only an example and is meant to be modified by other developers with adjustment for their needs. https://github.com/vardius/go-api-boilerplate/blob/master/.github/workflows/user-publish.yaml in this examples flow is simple, after creating release actions builds docker image which later in my case because my home server doesn't have external IP address
In real life you probably want that process to be automated, and would add more GitHub Actions to continue the flow. Might even host your own helm chart for https://github.com/vardius/go-api-boilerplate/tree/master/helm/microservice for my home server I was thinking of hosting GitHub action runner which would automatically deploy it (no need for external ip then) reducing my involvement completely |
@vardius hey bud. great work on this, I really appreciate it! Are you familiar with DevSpace? I have been using their tools, specifically their cluster development features (including hot reloading), in some personal projects and I'm super happy with it. |
Hi @omerdn1 thanks for asking, I am not familiar with it, thanks for sharing. I will look into it. I would also strongly encourage you to make try and integrate it with this boilerplate ? Any contributions are more then welcome! |
@vardius Thank you for the great work. Can we integrate this with go-micro and nats? |
would you like to submit a proof of concept as a new pr ? |
If
Let me know so I can update documentation, allowing other ppl get over same issues faster.
Please comment here about your suggestion what should/could be added/updated in the documentation. And I will try to explain or to do it as soon as possible.
The text was updated successfully, but these errors were encountered: