A production-ready TypeScript/NestJS reference implementation of DDD, Hexagonal Architecture, CQRS, Event Sourcing, and Event-Driven Architecture.
ddd-hexagonal-cqrs-es-eda is a complete, production-like reference implementation that demonstrates how to combine Domain-Driven Design, Hexagonal Architecture, CQRS, Event Sourcing, and Event-Driven Architecture in a TypeScript and NestJS application. It solves the problem of understanding how to practically apply these advanced patterns to build complex, maintainable software systems.
Backend and full-stack developers, software architects, and engineering teams who are designing or refactoring complex applications and want a real-world example of modern architectural patterns.
Developers choose this project because it provides a fully working, well-documented example that bridges the gap between theory and practice, showcasing how these patterns integrate in a single codebase with production-grade tooling like observability and testing.
Complete working example of using Domain Driven Design (DDD), Hexagonal Architecture, CQRS, Event Sourcing (ES), Event Driven Architecture (EDA), Behaviour Driven Development (BDD) using TypeScript and NestJS. Like what you see? Don't forget to star! ⭐ ^^^
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Demonstrates how Hexagonal Architecture, DDD, CQRS, and Event-Driven Architecture work together in a single codebase, with clear module separation and event storming documentation from the README.
Includes observability with Jaeger and Prometheus, behavior-driven tests, and flexible deployment options, making it a near-production-ready reference for complex systems.
Uses bounded contexts and ports/adapters to decouple the domain layer, enabling easy switching between modular monolith and microservices configurations as described in the technical features.
Provides a working Todo app with detailed explanations, theoretical reviews, and event storming maps, effectively bridging the gap between software architecture theory and implementation.
Requires Docker, multiple services (e.g., NATS, PostgreSQL, MongoDB), and has a steep learning curve, which the README acknowledges can be challenging for quick starts.
Described as an 'over-engineered ToDo app' in the README, making it unsuitable for projects where architectural purity outweighs practical needs, leading to unnecessary boilerplate.
Includes deprecated features like gRPC query caching, which may confuse users and require updates or workarounds for modern deployments, as noted in the technologies section.