Skip to content

Golang's DDD Implementation. An idiomatic Go library implementing Domain-Driven Design with Event Sourcing and Aggregate Root patterns, using channels for efficient event handling.

Notifications You must be signed in to change notification settings

sosalejandro/ddd-golang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DDD Golang Project

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.

Table of Contents

Introduction

This project demonstrates how to apply DDD principles in a Golang application. It includes examples of Aggregates, Entities, Value Objects, and Domain Events.

Getting Started

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

TODO

  • 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.

Internal TODO

  • 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

Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Golang's DDD Implementation. An idiomatic Go library implementing Domain-Driven Design with Event Sourcing and Aggregate Root patterns, using channels for efficient event handling.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages