A Go implementation of Domain-Driven Design tactical patterns, ported from the DDD Sample App.
GoDDD is a Go-based implementation of Domain-Driven Design tactical patterns, ported from the Java DDD Sample App. It demonstrates how to structure enterprise applications using DDD concepts like aggregates, value objects, and repositories in an idiomatic Go way. The project provides a practical example through a cargo booking domain to help developers understand DDD in Go.
Go developers and software architects building complex, domain-rich enterprise applications who want to apply Domain-Driven Design principles. It's also valuable for teams transitioning from Java to Go and seeking DDD references.
GoDDD offers a concrete, production-ready example of DDD in Go, bridging the gap between theoretical patterns and practical implementation. Its focus on idiomatic Go code ensures developers learn how to adapt DDD without sacrificing Go's simplicity and efficiency.
Exploring DDD in Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The project has been refactored from a Java port to follow Go conventions and best practices, emphasizing simplicity and pragmatism as stated in the philosophy.
Uses a cargo booking domain to concretely demonstrate DDD tactical patterns like aggregates and repositories, providing a real-world context for learning.
Implements clear separation of concerns with domain, application, and infrastructure layers, aiding in maintainability for enterprise applications.
Includes Docker and Docker Compose configurations for easy setup and testing, as shown in the running instructions with examples for linking services.
The project is marked as unstable in the README badges, indicating it may have breaking changes and is not intended as a production-ready solution without modification.
README explicitly states it's not a tutorial or best-practice guide, so it lacks detailed explanations, making it challenging for DDD newcomers to follow.
Despite refactoring, oddities from the original Java port remain, which can introduce non-idiomatic Go patterns and confusion for developers.