awesome-ddd
A curated list of Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), Event Sourcing, and Event Storming resources
A curated collection of books, courses, blog posts, and code examples focused on Domain-Driven Design, CQRS, Event Sourcing, and Event Storming, software design approaches for tackling complex business problems.
This repository is a curated reading and learning list, not a piece of software you install. It gathers links to books, video courses, blog posts, podcasts, sample projects, and code libraries all focused on a cluster of related software design ideas: Domain-Driven Design, CQRS, Event Sourcing, and Event Storming.
Domain-Driven Design (DDD) is an approach to building software for complicated business problems. The central idea is that the software structure should closely reflect how the business itself thinks about the problem, and that developers should work hand-in-hand with the people who understand the business to build a shared vocabulary. CQRS, or Command Query Responsibility Segregation, is a pattern where reading data and changing data are handled by separate parts of the system rather than one combined piece. Event Sourcing is a way of recording application state by saving every change as a logged event, rather than just overwriting the current value. Event Storming is a group workshop technique for mapping out the flows and rules of a business domain before writing any code.
The list is organized into sections: books (including the foundational "Blue Book" by Eric Evans that coined the term DDD), free ebooks, training courses, video collections, community forums, blogs, and sample projects. Sample projects are grouped by programming language, covering Go, .NET (C# and F#), Haskell, JavaScript and TypeScript, JVM languages, and PHP. There is also a section of libraries and frameworks across those same language ecosystems that implement DDD or CQRS patterns, plus a tools section and links to user groups and conferences.
The list was created by Nick Chamberlain and is maintained as a community resource. It follows the format of an "awesome list," a well-known style of open-source repository used on GitHub to aggregate quality references on a specific topic. Anyone can suggest additions via pull requests.
The full README is longer than what was shown.
Where it fits
- Find the right book or course to learn Domain-Driven Design from scratch and build a shared vocabulary with your team.
- Discover sample projects in your language, Go.NET, JavaScript, JVM, or PHP, that implement DDD and CQRS patterns.
- Browse libraries and frameworks for your tech stack that provide Event Sourcing or CQRS building blocks you can adopt.
- Find resources for running an Event Storming workshop with your team before writing any code.