Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Domain-Driven Design
  3. Over-engineered ToDo app

Over-engineered ToDo app

MITTypeScriptv0.3.0

A production-ready TypeScript/NestJS reference implementation of DDD, Hexagonal Architecture, CQRS, Event Sourcing, and Event-Driven Architecture.

Visit WebsiteGitHubGitHub
1.4k stars122 forks0 contributors

What is Over-engineered ToDo app?

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.

Target Audience

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.

Value Proposition

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.

Overview

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! ⭐ ^^^

Use Cases

Best For

  • Learning how to implement Hexagonal Architecture with Ports and Adapters
  • Understanding Domain-Driven Design tactical patterns in TypeScript
  • Building event-driven systems with CQRS and Event Sourcing
  • Creating modular applications that can switch between monolith and microservices
  • Studying observability integration (tracing, logging, metrics) in a complex app
  • Reference for structuring large NestJS projects with bounded contexts

Not Ideal For

  • Projects needing rapid MVP development without advanced architectural overhead
  • Teams lacking Docker and distributed systems expertise for complex infrastructure setup
  • Applications with simple CRUD operations where event sourcing and CQRS add unnecessary complexity
  • Environments with limited computational resources, as it requires multiple running services (NATS, databases, observability tools)

Pros & Cons

Pros

Comprehensive Pattern Integration

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.

Production-Grade Tooling

Includes observability with Jaeger and Prometheus, behavior-driven tests, and flexible deployment options, making it a near-production-ready reference for complex systems.

Modular and Maintainable Design

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.

Practical Learning Resource

Provides a working Todo app with detailed explanations, theoretical reviews, and event storming maps, effectively bridging the gap between software architecture theory and implementation.

Cons

High Complexity and Setup

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.

Over-Engineered for Simplicity

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.

Deprecated and Legacy Components

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.

Frequently Asked Questions

Quick Stats

Stars1,431
Forks122
Contributors0
Open Issues0
Last commit8 months ago
CreatedSince 2023

Tags

#software-architecture#event-driven-architecture#cqrs#jaeger#event-sourcing#nestjs#domain-driven-design#ddd#todo-app#bdd#typescript#mongodb#hexagonal-architecture#nats#reference-implementation

Built With

E
Envoy
N
NATS
P
PostgreSQL
N
NestJS
G
Grafana
M
MongoDB
T
TypeScript
J
Jest
P
Prometheus
J
Jaeger
D
Docker

Links & Resources

Website

Included in

Domain-Driven Design12.2k
Auto-fetched 17 hours ago

Related Projects

Booster framework examplesBooster framework examples

Booster Framework

Stars448
Forks98
Last commit1 month ago
wolkenkit Sample Applicationswolkenkit Sample Applications

A collection of DDD sample applications, such as TodoMVC, a geocaching app, collaborative boards etc

Stars0
Forks0
Last commit
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub