https://github.com/damianopetrungaro/go-ddd
A practical guideline for creating DDD application in Go
https://github.com/damianopetrungaro/go-ddd
architecture ddd ddd-architecture go golang
Last synced: about 1 year ago
JSON representation
A practical guideline for creating DDD application in Go
- Host: GitHub
- URL: https://github.com/damianopetrungaro/go-ddd
- Owner: damianopetrungaro
- Created: 2023-02-13T21:29:09.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-03-18T22:46:05.000Z (over 2 years ago)
- Last Synced: 2025-06-25T02:26:11.021Z (about 1 year ago)
- Topics: architecture, ddd, ddd-architecture, go, golang
- Language: Go
- Homepage:
- Size: 3.12 MB
- Stars: 13
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# A practical guideline for developing Domain Driven Design application in Go
As a practitioner of Go and DDD,
I have observed a common tendency in the community to create packages with generic names
like "domain," "application," and "infrastructure."
In my opinion, this practice can lead to a lack of clarity and structure in the codebase,
which can be detrimental to maintainability and scalability.
To address this issue, I have developed an opinionated repository
that provides guidelines for building applications using Go and DDD while avoiding these common pitfalls.
The primary purpose of this repository is to encourage developers to think more deeply about the structure and organization of their code
and to provide concrete examples and best practices for achieving a clean and maintainable architecture.
## Folder structure
### [Domain Layer](https://damianopetrungaro.com/posts/ddd-how-i-structure-idiomatic-golang-services/#domain-layer)
### [Application Layer](https://damianopetrungaro.com/posts/ddd-how-i-structure-idiomatic-golang-services/#application-layer)
### [Infrastructure Layer](https://damianopetrungaro.com/posts/ddd-how-i-structure-idiomatic-golang-services/#infrastructure-layer)
# Examples
You can take a look at example in the `example` directory.