wild-workouts-go-ddd-example
service
wild-workouts-go-ddd-example | service | |
---|---|---|
30 | 18 | |
4,899 | 3,376 | |
1.6% | 1.1% | |
2.7 | 9.6 | |
10 months ago | 7 days ago | |
Go | Go | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
wild-workouts-go-ddd-example
-
Looking for elegant code bases written in Golang
Take a look at: https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-exampl...
(I’m one of the authors.)
This project shows how to apply more complex patterns popular in business applications while staying true to the Go ideas, and not copying them blindly from Java.
In the Go community, you’ll often hear people say „just keep things simple” beats all patterns and is all you need. This may be true if you write a CLI tool or a small library, but if you have a team maintaining a big application, some patterns are super helpful.
-
Accomplishing Single Responsibility Principle in my project
Here is a reference implementation by the same authors of the blog post you referenced: https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-example/tree/master/internal/trainer.
- Seeking Feedback on Go API Implementation using DDD
-
In depth, complex technical implementation videos?
In this case I recommend Three Dots Labs blog and Ardan Labs courses and blog posts.
-
Yet another RealWorld implementation - Go kit, PlanetScale, sqlx, chi
As a rather new developer, I'm ashamed to admit that I struggle with this. I've seen the Dave Cheney writeup about it and I agree with your reasoning, but sometimes I end up in situations like this, where they wrote a server utility, put it into the common package and imported it into the services that need it. The issue I have is the organization of it all because the folder structure seems to make a clear separation of the core services from the utility package. If you have any ideas or tips to help avoid it, that'd be awesome!
- Go Blogs
-
As a Go programmer, what design pattern, programming techniques have you actually used, implemented regularly in your workplace which made your life much easier?
Clean architecture is not tied to some specific paradigm. It's a way of thinking about programs that is common to almost every mature developer. Many developers use it without even knowing the name - they just came to it by themselves through many tries and errors. There is a good free book about using it in Go, called Go with the Domain if you interested.
-
Is there a good example of an open source non-trivial (DB connection, authentication, authorization, data validation, tests, etc...) Go API?
Wild Workouts should match your needs: https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-example
-
Where can I find well-written go code to learn from?
For Event-Driven / DDD / Microservice projects, take a look at this Github org https://github.com/ThreeDotsLabs and their blog detailing the techniques used https://threedots.tech .
-
Domain-Driven Design Framework for Go Developers
Nice job at taking a stab at DDD in Go! You may want to check out https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-example for some inspiration and learning around DDD and Go.
service
-
Should I take the Ardan Labs course? If yes, then which one?
Ultimate Service was useful for me. None of the "backend" concepts were new, but you get to see how Bill would layout/design an API-based service. If you're experienced you'll notice the opinionated choices he makes, and I found myself saying "Nah, I'm not sure I'd do it like that". I appreciated its use of Kubernetes and KIND as I'd never played with them before. How he uses Docker to spin up a DB instance for tests is pretty cool. There's a lot of copy & paste as you code along with him (you copy from the "finished project" and paste into your work in progress). The full example project is online at https://github.com/ardanlabs/service. You won't write all that code, and this version is newer than the one I did, but it gives you an idea of what you might learn.
-
If you could go back in time | What would you do different regarding go
So what can you do insted? For testing databases, setup a docker instance for tests (e.g. like in https://github.com/ardanlabs/service), or start an embedded-postgres daemon (see https://github.com/fergusstrange/embedded-postgres). For communication with external APIs, just pass the http.Client (either in context.Context or as a field on the struct). Then in tests, you can override the http.Client.Transport func.
- Where can I find well-written go code to learn from?
-
GO web sever - file structuring convention
Take a look at https://github.com/ardanlabs/service from Bill Kennedy. You can probably simplify the structure a bit since your project is minimal, but that repo is gold.
-
Say you're mentoring someone just getting comfortable with go. What do you think they should know?
Checkout https://github.com/ardanlabs/service for inporation. Tip: try to avoid creating a service package with all services, a domain package with all domain structs, etc.
-
Any resources on building a simple web app with Go without any frameworks?
Or go through this repo https://github.com/ardanlabs/service
-
GitHub - johnwarden/httperror: Golang package for returning errors instead of handling them directly.
I've seen this handler modification and wrapping pattern in Ardan Labs' service repository. https://github.com/ardanlabs/service/tree/master/foundation/web
-
REST API project structure
https://github.com/ardanlabs/service This is something which I really like and has taken into account a lot of engineering decisions.
- GitHub examples of Go that's written really well?
- Is "Let's go" and "Let's go further" worth it?
What are some alternatives?
clean-architecture-golang - This is my purpose of how to structure a web application in golang following the clean architecture principles
golang-standards/project-layout - Standard Go Project Layout
watermill - Building event-driven applications the easy way in Go.
go-starter - An opinionated production-ready SQL-/Swagger-first RESTful JSON API written in Go, highly integrated with VSCode DevContainers by allaboutapps.
fx - A dependency injection based application framework for Go.
scaffold - Generate scaffold project layout for Go.
wire - Compile-time Dependency Injection for Go
pagoda - Rapid, easy full-stack web development starter kit in Go
remix - Build Better Websites. Create modern, resilient user experiences with web fundamentals.
cookiecutter-golang - A Go project template
eShopOnContainers - Cross-platform .NET sample microservices and container based application that runs on Linux Windows and macOS. Powered by .NET 7, Docker Containers and Azure Kubernetes Services. Supports Visual Studio, VS for Mac and CLI based environments with Docker CLI, dotnet CLI, VS Code or any other code editor. Moved to https://github.com/dotnet/eShop.
modern-go-application - Modern Go Application example