This project is an implementation of Domain-Driven Design (DDD) principles using Golang. It aims to provide a structured approach to building complex software systems by focusing on the core domain and domain logic.
This project demonstrates how to apply DDD principles in a Golang application. It includes examples of Aggregates, Entities, Value Objects, and Domain Events.
To get started with this project, clone the repository and install the necessary dependencies.
git clone https://github.com/sosalejandro/ddd-golang.git
cd ddd-golang
go mod tidy
- Aggregate Root - See the implementation in the /pkg/aggregate folder
- Improvements for standardization and domain errors
- Event Manager (Serializer for an Event Store)
- Open Telemetry OTEL first-class support.
- Implement cassandra methods for Load and SaveSnapshot
- Implement InMemory Repository
- Create PoC for InMemory repository implementation
-
Create PoC for Cassandra's repository implementation - Update
AggregateRoot
documentation for its implementation - Generate ADR for
AggregateRoot
refactor - Implement Moq library
- Implement generic repository tests (mock AggregateRepositoryInterface)
-
Implement cassandra mock tests - Implement mocked tests for factory methods under the
factory
folder - Refactor Golang modules
- Generate Repository documentation
- Generate EventManager documentation
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
This project is licensed under the MIT License. See the LICENSE file for details.