Awesome Lists

awesome-ddd

by heynickc

awesome listpushed about 2 years ago

A curated list of Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), Event Sourcing, and Event Storming resources

AI summary

DDD toolkit

A curated collection of resources and tools for software developers to learn and apply Domain-Driven Design, CQRS, Event Sourcing, and related concepts in their work.

stars
11.3K
forks
1.4K
watching
557
awesome lists
6
entries
294
View on GitHub

Embed the badge

Show how many awesome lists link to your project. The count updates automatically.

Awesome Lists badge
Markdown
[![Awesome Lists Badge](https://awesome.facts.dev/shield/heynickc/awesome-ddd/links.svg)](https://awesome.facts.dev/awesome/heynickc/awesome-ddd)
HTML
<a href="https://awesome.facts.dev/awesome/heynickc/awesome-ddd"><img src="https://awesome.facts.dev/shield/heynickc/awesome-ddd/links.svg" alt="Awesome Lists Badge" /></a>
Image URL
https://awesome.facts.dev/shield/heynickc/awesome-ddd/links.svg

What's in the list

294 links in 29 sections, with live GitHub stats.activeno commit in 2y

Contents

Books

Free eBooks

Training Courses

Training Courses / Pluralsight

Training Courses

  • Rails + Domain Driven Design Workshop

    Introduction to DDD, fundamentals of CQRS & Event Sourcing for Ruby/Rails developers

  • Reactive Architecture: CQRS and Event Sourcing

    This course will discuss the reasons we use CQRS/ES, what benefits it provides us, but also what it will cost us to use. We will see how CQRS/ES can impact the scalability, consistency, and availability of our application

  • Reactive Architecture: Domain Driven Design

    Use DDD to decompose a problem domain into manageable parts. Learn how those parts can become the foundation of Reactive Microservices and Reactive Architecture. Free, online, self-paced. Certificate offered upon completion

  • Spatie's Event Sourcing Course

    Learn how to build event sourced applications in Laravel using Spatie's event-sourcing package. Has 2 hours of video content and an accompanying ebook

Video Collections

Community Resources

Blogs

  • Nick Chamberlain

    Helpful development and design advice for .NET developers

  • Ardalis.com

    Steve Smith. Pluralsight author and author of course and Microsoft

  • DDD Weekly

    Weekly curated links related to DDD/CQRS/ES

  • Daniel Whittaker

    Want to learn about CQRS and Event Sourcing? This blog is packed with step-by-step articles to give you a head start

  • Cyrille Martraire

    Being so immersed in finance while still in love with programming, I’m naturally a big fan of Domain-Driven Design by Eric Evans, along with TDD, BDD and agile/XP practices

  • Jimmy Bogard

    I focus on DDD, distributed systems, and any other acronym-centric design/architecture/methodology

  • CodeBetter

    CodeBetter.Com exists in order to help foster awareness of better practices, superior tools, proven methodologies and techniques within the software development community

  • Greg Young

    Good Enough Software is By Definition Good Enough

  • InfoQ Blog

    Domain-Driven Design Content on InfoQ

  • Dan North

    Inventor of Behavior-Driven Design. Blogs and talks about Event Storming also

  • Mike Mogosanu

    Maintainable code is a business advantage. Creator of Domain Map: The Domain Modeling Tool - Easy And Powerful Domain Driven Design

  • Christian Posta

    Principal Middleware Architect @ Red Hat, open-source enthusiast, committer @ Apache, Cloud, Integration, Kubernetes, Docker, OpenShift, Fabric8

  • Vladimir Khorikov

    Pluralsight author. Blogs about software development principles and best practices

  • TechBeacon

    Articles on TechBeacon tagged

  • Derek Comartin

    Articles under the category

  • Alberto Brandolini

    Inventor of Event Storming. Asserting that problems cannot be solved with the same mindset that originated them, Alberto switches perspective frequently assuming the architect, mentor, coach, manager or developer point of view

  • Jérémie Chassaing

    Various articles about DDD/CQRS. Implemented Greg Young's SimpleCQRS sample in F#

  • Vaughn Vernon

    Vaughn Vernon understands the unique demands of software development and the challenges you face as you improve your craft in a fast-paced industry

  • Vladik Khononov

    Various DDD-related articles

  • Eventsourcing Publications

    Practical event sourcing

  • Jef Claes

    Excellent articles and talks on Domain-Driven Design

  • Udi Dahan

    From the creator of NServiceBus

  • Chris Patterson

    From the creator of the MassTransit distributed application framework

  • Aaron Stannard

    From the CTO and co-founder of Petabridge, developers of the Akka.NET Actor Model framework

  • Roger Johansson

    Mostly C#, DDD, and Akka.NET

  • Konrad Garus

    Ranting and Programming in Java, Clojure, and JavaScript. Articles tagged under

  • Oasis Digital

    Content by Oasis Digital tagged under

  • Adaptech

    Adaptech Solutions blog. Our founder, Adam Dymitruk, debated the merits of CQRS with Greg Young before Greg coined the term. Adam and business partner Robert Reppel are among the leading practitioners of event-sourced microservices

  • Lev Gorodinski

    Several articles about DDD from 2013, which are still relevant

  • Dino Esposito

    Software architect, trainer, book author. Author of

  • Dan Bergh Johnsson "Dear Junior"

    Domain-Driven Design mixed with security, and agile in general. Written as fictional letters to a younger programmer

  • the native web

    DDD & Co. series

  • Arkency

    Various DDD, CQRS, Event Sourcing related articles from Ruby experts

  • Svaťa Šimara

    DDD series - language, domain, modeling, infrastructure, implementation in PHP

  • Martin Havlišta

    DDD, CQRS, TDD blog posts with code samples in C# .NET

  • Khalil Stemmler

    DDD series introduction and talk about how to implement DDD with TypeScript

  • Kenny Baas-Schwegler

    DDD, BDD, Socio-technical, EventStorming and continuous delivery blogs

  • João Rosa

    Personal blog about Domain-Driven Design, Visual Collaboration, leadership and organisational design. And other things in between. Curator of and host of the

  • GlobalAppTesting engineering

    GlobalAppTesting's engineering blog with materials on practical DDD and CQRS

Sample Projects / GO

  • BDD in GO

    Sample app demonstrating the use of Cucumber + GO for a BDD testing approach. Blog post can be found

  • Citerus DDD Sample App GO Port

    This is an attempt to port the to idiomatic Go. It can be run in a dockerized mode for previewing the application

  • DDD by Refactoring

    Complete serverless application to show how to apply DDD, Clean Architecture, and CQRS by practical refactoring of a Go project. A full blog series about it can be found at

  • DDD Food App

    Sample DDD application implementing the 4 layers (Domain, Infrastructure, Application and Interface) and considering two domain patterns. There's a blog article written for it

  • DDD Sample in GO

    Just another sample application implementing the four layers of DDD

  • Evolutive CRUD API

    API implementation with full CRUD using a SOLID, Hexagonal Architecture. There is a series of blog post written for it at

  • Simple Hexagonal Architecture PoC API

    PoC for a patients API using the hexagonal architecture pattern

  • Azure DDD boilerplate

    A boilerplate project for DDD in Azure using a custom handler and Cosmos DB for event sourcing

Sample Projects / .NET (C#/F#)

  • Better code with DDD building blocks

    solution presents usage of DDD tactical patterns to achieve better readability and expressiveness of the code. Applying DDD patterns together with ubiquitous language closes the gap between language spoken by experts and the team and language used in the code

  • CQRS-DDD Example

    Domain Driven Design, CQRS, & Event Sourcing Example using GetEventStore, CommonDomain, NServiceBus, Entity Framework, SQL Server, SignalR

  • ContosoUniversityCore

    ContosoUniversity on ASP.NET Core with Full .NET Framework

  • DDD-starter-dotnet

    Sample implementation and comparison of various approaches to building DDD applications. Useful as a baseline to quickly start a DDD .net project

  • DDDInventoryItemFSharp

    An idiomatic F# implementation of Domain-Driven Design

  • DDDSkeletonNet

    (C#) - a .NET skeleton project to introduce the concepts of Domain Driven Design and loosely coupled layers

  • DotNet CQRS Intro

    Examples of implementation CQRS with Event Sourcing - evolutionary approach (no CQRS, separate models and commands with the same model, separate models and commands with separate models, separate storage engines, event sourcing)

  • EISK

    .NET CLI and VS Templates with simple use cases to build scalable applications on top of .net core with architectural best practices (DDD, onion architecture etc)

  • EmailMaker

    Email marketing ASP.NET Core MVC and ASP.NET MVC demo app demonstrating usage

  • Equinox Project

    Full ASP.NET Core 3.1 application with Clean Architecture, DDD, CQRS and Event Sourcing concepts

  • eShopOnWeb

    Full ASP.NET Core 3.1 reference application from Microsoft showing monolithic deployment architecture

  • eShopOnContainersDDD

    eShop fullstack example featuring catalog, basket, checkout, and order bounded contexts

  • Example of Domain-Driven Design in F#

    Example of Domain Driven Design for the game of checkers. There are two files: a scratch file with a series of designs, and a final version

  • Event Sourcing .NET

    samples and resources about Event Sourcing and CQRS in .NET. Contains also a self-paced kit of how to built own Event Store

  • EventFlow.Example

    DDD, CQRS, and Event-Sourcing example and contains following technology stack: , , , , ,

  • Fohjin

    Example project that accompanies Mark Nijhof's book

  • FsUno

    Event sourcing implementation sample in F#

  • IDDD Samples in .NET

    These are the sample Bounded Contexts for C#.NET from the book "Implementing Domain-Driven Design" by Vaughn Vernon

  • Modular Monolith

    Full Modular Monolith .NET application with Domain-Driven Design approach

  • NLayerAppV3

    (.Net Core Preview 2) - a N-Layered Architecture Sample Project

  • Reactive Trader Cloud

    Reactive Trader Cloud by Adaptive Consulting

  • Sample .NET Core CQRS REST API

    .NET Core REST API CQRS implementation with raw SQL and DDD using Clean Architecture

  • Scritchy

    CQRS without the Plumbing,

  • Simple CQRS in F#

    Greg Young's SimpleCQRS in F#

  • SimpleCQRS

    Greg Young's "Simplest Thing" CQRS with Event Sourcing project

  • TaskoMask

    Task management system based on .NET Core with DDD, CQRS and Event Sourcing Concepts

  • TodoMVC-DDD-CQRS-EventSourcing

    Implementation of basic Todo app via tastejs/todomvc in C#/Typescript with eventsourcing, cqrs, and domain driven design

Sample Projects / Haskell

  • Eventuria gsd

    Haskell todo list reactive application with DDD, CQRS and Event Sourcing, FRP

Sample Projects / Idris

  • OrderTaking

    Dependently typed implementation of the Domain Modeling Made Functional book. An example project how to formalize Bounded Context and Workflow diagram with dependent types. A NodeJS deployable demo

Sample Projects / JavaScript / TypeScript

  • wolkenkit Sample Applications

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

  • Booster framework examples

    Example applications built with Booster Framework

  • Over-engineered ToDo app

    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 generated using the

Sample Projects / JVM languages

  • Akka CQRS ES Demo

    Demo project to implement the CQRS and Event Sourcing patterns in Scala-Akka

  • DDD By Examples - Library

    sample project of a library driven by real business requirements. Modular monolith implemented with the help od DDD, BDD, EventStorming, Example Mapping, CQRS, and more

  • DDD Leaven

    DDD-CQRS sample v2.0 project that helps you with starting out advanced domain modeling using Spring, JPA and testing

  • DDD Workshop - Project Manager

    "Do It Yourself" DDD workshop and a sample DDD application at the same time. Based on a project managing domain

  • Event Sourcing Example

    A simplified (in memory) example of Event Sourcing and CQRS implementation for Java code (modeled for banking domain use cases)

  • Event Sourcing and CQRS Examples

    A pragmatic application of Event Sourcing and CQRS in Java with good references for common related problems, e.g. event ordering and idempotency

  • Event Sourcing and CQRS Sample

    Sample event sourced application with Command Query Responsibility Segregation

  • IDDD Samples

    These are the sample Bounded Contexts from the book "Implementing Domain-Driven Design" by Vaughn Vernon

  • Java CQRS Intro

    Examples of implementation CQRS with Event Sourcing - evolutionary approach (no CQRS, separate models and commands with the same model, separate models and commands with separate models, separate storage engines, event sourcing)

  • Kotlin DDD Sample

    Sample DDD/CQRS project written in Kotlin

  • EventStormingWorkshop - Designing Cloud Native Microservices On AWS

    A concrete sample to go through EventStorming workshop and implement DDD tactical design pattern in Java, apply AWS cloud native services to build up business Event based Coffeeshop scenario

  • DDDSample

    Sample DDD project using Spring Boot (originally hosted in )

  • Eclipse CargoTracker

    This project demonstrates how you can develop applications with the Jakarta EE platform using widely adopted architectural best practices like Domain-Driven Design (DDD). is intended to mirror a non-trivial application that developers in the real work would work on. It attempts to demonstrate first-hand how you can use Jakarta EE to effectively meet practical enterprise concerns such as productivity, agility, testability, flexibility, maintainability, scalability and security. The project is directly based on the well known original developed by DDD pioneer Eric Evans' company Domain Language and the Swedish software consulting company Citerus

  • https://github.com/felipexw/clean-arch-ddd-intro

    Simple DDD + Clean Architecture using Micronaut

Sample Projects / PHP

  • CodefyPHP Framework

    A PHP framework for codefying and building complex applications using Domain-Driven Design, CQRS, and Event Sourcing

  • DDD CQRS Todo Sample

    DDD CQRS ADR hexagonal architecture implementation built with PHP 7 and Symfony 5

  • DDD Wish List

    A sample application in PHP built with Symfony 3 and Vue.js

  • DDD Playground

    Sample implementation in PHP

  • Eric Evans DDD Cargo Sample

    PHP 7 Version of the cargo sample used in Eric Evans DDD book

  • Shop Cart in PHP

    Sample project that demonstrates how simple shop cart can look like. Domain objects,Doctrine integration.,TDD,layers,unit testing

  • Symfony 5 DDD ES CQRS backend

    DDD, CQRS and Event Sourcing app using Symfony and PHP 8

Libraries and Frameworks / GO

  • Ginkgo

    Ginkgo builds on Go's testing package, allowing expressive Behavior-Driven Development ("BDD") style tests

  • GOBDD

    Small BDD framework for GO

  • GoConvey

    Go testing in the browser. Integrates with . Write behavioral tests in Go

  • Godog

    Package godog is the official Cucumber BDD framework for Golang, it merges specification and test documentation into one cohesive whole, using Gherkin formatted scenarios in the format of Given, When, Then

Libraries and Frameworks / .NET

  • Aggregates.NET

    .NET event sourced domain driven design model via NServicebus and GetEventStore

  • AggregateSource

    Lightweight infrastructure for doing eventsourcing using aggregates

  • Akka.NET

    Akka.NET is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET & Mono

  • ABP

    Successor of ASP.NET Boilerplate - ASP.NET Core based application framework to create NLayered, Domain Driven Designed web applications with a microservice focused modular architecture

  • ASP.NET Boilerplate

    ASP.NET MVC, Web API and ASP.NET Core based application framework to create NLayered, Domain Driven Designed web Applications implementing best practices

  • ByValue

    This library helps to create ValueObjects (even with collection properties) with properly implemented equality behavior

  • Cedar.CommandHandling

    Middleware to handling commands over HTTP; typically used in CQRS applications

  • Cirqus

    d60 event sourcing + CQRS framework

  • CommandQuery

    Command Query Separation for 🌐ASP.NET Core ⚡AWS Lambda ⚡Azure Functions ⚡Google Cloud Functions 🌐ASP.NET Web API 2

  • CoreDdd

    Set of open-source .NET libraries helping with DDD and CQRS, with NHibernate persistence

  • CQRS on Azure

    CQRS on Windows Azure

  • Dolittle

    Build better applications with Dolittle. An Event Sourced, Microservice platform oriented around DDD with developer productivity and simplicity front and center

  • Edument CQRS and Intentful BDD Testing Starter Kit

    Library and tutorial for how to build CQRS/ES applications, including a BDD style testing framework

  • EventFlow

    Async/await first CQRS+ES and DDD framework for .NET

  • Core.EventStore

    A library to facilitate communication between CommandService and QueryService. The Idea is when any event occures in commandService, it should be persisted in QueryService in MongoDb

  • Its.Cqrs

    A set of libraries for CQRS and Event Sourcing, with a Domain-Driven Design flavor

  • Marten

    Postgresql as a Document Database and Event Store for .Net Applications

  • MassTransit

    Distributed Application Framework for .NET

  • MediatR

    Supports request/response, commands, queries, notifications and events, synchronous and async with intelligent dispatching via C# generic variance

  • MessageRouter

    Described in this video: by Paulmichael Blasucci at the New York F# .NET User Group

  • NetDevPack

    A smart set of common classes and implementations to improve your development productivity using .NET (DDD, CQRS, Specification Pattern, MediatR, Validations, Notifications)

  • NEventStore

    A persistence library used to abstract different storage implementations when using event sourcing as storage mechanism

  • NServiceBus

    Service bus for .NET

  • Projac

    Projac is a set of projection libraries that allow you to write projections targetting various backing stores

  • shriek-fx

    An simple,elegant and useful Domain-Driven Design and CQRS framework developed using .NET Core 2.0

  • SqlStreamStore

    .NET Stream Store library targeting SQL based implementations

  • Streamstone

    Event Store for Azure Table Storage

  • Stringly.Typed

    Making it easier to convert strings to/from .NET types

  • Xer.Cqrs

    A simple library for creating applications based on the CQRS pattern with support for attribute routing and hosted handlers. Developed in C# targeting .NET Standard 1.0

Libraries and Frameworks / Databases

  • Event Store

    The open-source, functional database with Complex Event Processing in JavaScript

  • Eventsourcing

    Business event capture and querying framework

  • Message DB

    Microservice Native Event Store and Message Store for Postgres. A fully-featured event store and message store implemented in PostgreSQL for Pub/Sub, Event Sourcing, Messaging, and Evented Microservices applications

  • Serialized

    Complete platform for Event Sourcing & CQRS

Libraries and Frameworks / Elixir

  • Commanded

    Command handling middleware for CQRS/ES applications, Pure Functional Data Structures for Aggregates and Process Managers, Point-to-Point message routing, and much more in Elixir (Erlang VM) - All in Actor concurrency model

  • Event Bus

    Traceable, extendable and minimalist event bus implementation for Elixir with built-in event store and event watcher based on ETS

  • eventstore

    CQRS event store using PostgreSQL for persistence

Libraries and Frameworks / JavaScript / TypeScript

  • cqrs.js

    CQRS implementations in node.js. Includes , , ,

  • wolkenkit

    A CQRS, DDD, and event-sourcing framework for JavaScript and Node.js

  • Bitloops Language (BL)

    Open-source, 4th-generation, transpiled programming language that helps you write clean code, well-designed systems, and build high-quality software that is testable, auditable and maintainable using DDD and Hexagonal Architecture

  • Booster

    A CQRS, DDD and event-sourcing open-source framework that leverages all the infrastructure and uses high-level abstractions and conventions. It help users build advanved even-driven applications letting them focus on business logic exclusively

  • Node API Boilerplate

    NodeJS web API boilerplate for DDD and Clean Architecture applications

Libraries and Frameworks / JVM

  • akka-ddd

    Reusable artifacts for building applications on top of the Akka platform following CQRS/DDDD-based approach

  • Apache Isis

    Apache Isis is a framework for rapidly developing domain-driven apps in Java

  • Axon Framework

    The axon framework is focused on making life easier for developers that want to create a java application based on the CQRS principles

  • DDDplus framework

    A lightweight flexible development framework for complex business architecture based on DDD

  • JESA

    Event sourced aggregates for Java

  • Lagom

    The Lagom Framework is a microservices framework for the Java Virtual Machine, with APIs for the Java and Scala languages. It includes an Event Sourcing/CQRS based persistence module

  • SeedStack's Business Framework

    A set of building blocks that enable you to code business logic according to the Domain-Driven Design (DDD) approach

  • Spine Event Engine

    a CQRS/ES framework for building cloud applications. Defines Bounded Contexts with their Commands, Events, and Entity states in Protobuf. The backend logic is written in Java, on top of the Proto-generated code. Client code in Java, JS or Dart communicates with the backend via gRPC

  • Ahoo-Wang/Wow

    A Modern Reactive CQRS Architecture Microservice development framework based on DDD and EventSourcing

Libraries and Frameworks / PHP

  • Broadway

    Broadway is a (PHP) project providing infrastructure and testing helpers for creating CQRS and event sourced applications

  • Ecotone

    Enables message driven architecture in PHP and provides building blocks to follow DDD and CQRS principles

  • PHP Glossary

    Apply a Term Analysis to extract domain terms vs out-of-scope terms in a DDD manner

Libraries and Frameworks / Python

  • Eventsoucing in Python

    Mature, stable Python library for event sourcing and DDD. Supports wide variety of databases, different kinds of orderings of domain events, application level encryption, snapshotting, optimistic concurrency control, and process events. Applications, and entire systems of applications, can be defined independently of infrastructure, and run in different ways (single threaded, multi-threaded, clocked, stepping, multi-process, actor model) and with different infrastructure

  • dry-python

    A set of libraries for pluggable business logic components

  • PyAssimilator

    Quickly create DDD Python patterns, Event-Based Systems, CRUD applications. Set of Python patterns for database access that support SQLAlchemy, MongoDB, Redis, or Pure Python. PyAssimilator allows you to write code without dependencies, meaning you can switch SQL to NoSQL without changing a single file in your system

Libraries and Frameworks / Ruby

  • Eventide

    Event Sourcing and Microservices Stack for Ruby. A set of libraries for writing event driven, autonomous services

  • Rails Event Store

    Rails Event Store (RES) is a library for publishing, consuming, storing and retrieving events. It's your best companion for going with an event-driven architecture for your Rails application

Podcasts and Interviews

Conferences

User Groups

Tools

  • Domain Storytelling

    a knowledge-crunching technique that helps the people involved to familiarize themselves with the domain and work out a model that expresses their shared understanding. Available as a , as well as open-source online tool, ( )

More related projects

Add a GitHub project

Missing a project or an awesome list? Paste its GitHub URL and we fetch it right away.