Awesome Domain-Driven Design
      
    
    
      
        A curated list of Domain-Driven Design (DDD), Command Query
        Responsibility Segregation (CQRS), Event Sourcing, and Event Storming
        resources.
      
    
    
      Check out my blog and
        weekly DDD newsletter
        or say hi on Twitter!
    
    
      Domain-Driven Design (DDD)
      is an approach to software development for complex needs by connecting the
      implementation to an evolving model. The premise of Domain-Driven Design
      is the following:
    
    
      - 
        placing the project’s primary focus on the core domain and domain logic
      
 
      - basing complex designs on a model of the domain
 
      - 
        initiating a creative collaboration between technical and domain experts
        to iteratively refine a conceptual model that addresses particular
        domain problems
      
 
    
    The term was coined by Eric Evans in his book of the same title.
    
      Command Query Responsibility Segregation (CQRS)
      is simply the creation of two objects where there was previously only one.
      The separation occurs based upon whether the methods are a command or a
      query (the same definition that is used by Meyer in Command and Query
      Separation, a command is any method that mutates state and a query is any
      method that returns a value).
    
    
      Event Sourcing
      the fundamental idea of Event Sourcing is that of ensuring every change to
      the state of an application is captured in an event object, and that these
      event objects are themselves stored in the sequence they were applied for
      the same lifetime as the application state itself.
    
    
      Event Storming
      is a workshop format for quickly exploring complex business domains.
    
    Contents
    
    Books
    
      - 
        Applying Domain Driven Design with CQRS and Event Sourcing
        - A walkthrough of using EventStorming and other modeling techniques to
        build a CQRS and Event Sourcing-based prototype for a fictional business
        domain.
      
 
      - 
        CQRS - Notes by Mark Nijhof from
        his experiences learning DDD and CQRS from Greg Young. There is an
        extensive sample project that accompanies this book.
      
 
      - 
        Domain-Driven Design: Tackling the Complexity at the Heart of
          Software
        - The canonical book that coined the term Domain-Driven Design. Also
        known as the “Blue Book.”
      
 
      - 
        Domain-Driven Design Distilled
        - Very good starter book before you read
        Implementing Domain-Driven Design
        or
        Domain-Driven Design: Tackling the Complexity at the Heart of
          Software.
      
 
      - 
        Domain-Driven Design in PHP
        - Real examples written in PHP showcasing DDD Architectural Styles,
        Tactical Design, and Bounded Context Integration.
      
 
      - 
        Domain-Driven Rails
        - Domain-Driven Rails describes 11 techniques (from Bounded Contexts to
        Event Sourcing) that you can use separately and together in new and old
        Rails apps to achieve better architecture.
      
 
      - 
        Domain Modeling Made Functional
        - Tackle Software Complexity with Domain-Driven Design and F#.
      
 
      - 
        Domain Specific Languages
        - Tangentially connected to DDD, describes the importance of the
        Ubiquitous Language and working together with domain experts, along with
        lots of technical details.
      
 
      - 
        Event Sourcing and CQRS with .NET Core and SQL Server
        - A walkthrough of using Domain-Driven Design with Event Sourcing and
        CQRS using ASP.NET Core and SQL Server in production.
      
 
      - 
        Hands-On Domain-Driven Design with .NET Core
        - Tackling complexity in the heart of software by putting DDD principles
        into practice by Alexey Zimarev.
      
 
      - 
        Implementing Domain-Driven Design
        - Also a canonical book presenting a top-down approach to understanding
        Domain-Driven Design. Also known as the “Red Book.”
      
 
      - 
        Implementing DDD, CQRS and Event Sourcing
        - Learn how to implement DDD, CQRS and Event Sourcing. Understand the
        theory and put it into practice with JavaScript and Node.js.
      
 
      - 
        Introducing Event Storming: An act of Deliberate Collective
          Learning
        - The deepest tutorial and explanation about EventStorming, straight
        from the inventor.
      
 
      - 
        Microsoft .NET - Architecting Applications for the Enterprise (2nd
          Edition)
        - A software architect’s digest of core practices, pragmatically
        applied.
      
 
      - 
        Patterns, Principles, and Practices of Domain-Driven Design (1st
          Edition)
        - Methods for managing complex software construction following the
        practices, principles and patterns of Domain-Driven Design with code
        examples in C#.
      
 
      - 
        Secure by Design
        - Shows how to use Domain-Driven Design to avoid security
        vulnerabilities.
      
 
      - 
        Specification by Example
        - This book distills from the experience of leading teams worldwide
        effective ways to specify, test, and deliver software in short,
        iterative delivery cycles. Case studies in this book range from small
        web startups to large financial institutions, working in many processes
        including XP, Scrum, and Kanban.
      
 
      - 
        Versioning in an Event Sourced System
        - Have you had troubles with versioning an Event Sourced system? Just
        getting into a new Event Sourced system for the first time? This book is
        the definitive guide of how to handle versioning over long periods of
        time.
      
 
      - 
        What is Domain-Driven Design?
        - A quick read exploring the core patterns and principles of
        Domain-Driven Design, as well as strategies for applying DDD in
        brownfield projects.
      
 
      - 
        Writing Great Specifications
        - Writing Great Specifications is an example-rich tutorial that teaches
        you how to write good Gherkin specification documents that take
        advantage of Specification by Example’s benefits.
      
 
    
    Free eBooks
    
      - 
        The Anatomy of Domain-Driven Design - The Infographic
        - An infographic on the anatomy of Domain-Driven Design.
      
 
      - 
        Architecting Modern Web Applications with ASP.NET Core and Microsoft
          Azure
        - Provides end-to-end guidance on building monolithic web applications
        using DDD, ASP.NET Core, and Azure.
        eShopOnWeb sample
      
 
      - 
        Architecture Patterns with Python
        - A book about Pythonic application architecture patterns for managing
        complexity.
      
 
      - 
        CQRS Journey
        - Exploring CQRS and Event Sourcing.
      
 
      - 
        Domain-Driven Design: The First 15 Years
        - To celebrate the anniversary, we’ve asked prominent authors in the
        software design world to contribute old and new essays. With
        contributions by Martin Fowler, James Coplien, Rebecca Wirfs-Brock, Mel
        Conway, and many more.
      
 
      - 
        DDD Reference
        - A summary of the patterns and definitions of DDD.
      
 
      - 
        Domain Driven Design Quickly
        - Domain Driven Design Quickly is a short, quick-readable summary and
        introduction to the fundamentals of DDD.
      
 
      - 
        Effective Aggregate Design
        - In this three-part series, Vaughn Vernon walks through some common
        design pitfalls, discusses the pros and cons of various aggregate
        modeling choices, and provides rules of thumb to guide modeling of
        aggregates.
      
 
      - 
        Getting Started with DDD when Surrounded by Legacy Systems
        - Describes three strategies for getting started with DDD when you have
        a big commitment to legacy systems.
      
 
      - 
        Living Documentation by Design, with Domain-Driven Design
        - Discover how a Living Documentation can help you in all aspects of
        your projects, from the business goals to the business domain knowledge,
        architecture and design, processes and deployment, even if you hate
        writing documentation.
      
 
      - 
        .NET Microservices: Architecture for Containerized .NET
          Applications
        - An introduction to developing microservices-based applications and
        managing them using containers.
        eShopOnContainers sample
      
 
      - 
        The Semantic JavaScript Backend for Event-Driven Development
        - A 68 pages long free ebook on what DDD, CQRS and event-sourcing are,
        and how they fit each other.
      
 
      - 
        DDD Magazine from Xebia #1
        - This magazine is packed with visionary and practical insights, based
        on personal, business, and customer experiences to support you on your
        DDD journey
      
 
      - 
        Visual Collaboration Tools
        - Visual Collaboration Tools is a book for teams building software. It
        describes tools that help us in our daily job, and also present field
        stories from different practitioners.
      
 
    
    Training Courses
    
      - 
        DDD Workshops across Europe and Online
        - Public Workshops by Eric Evans, Alberto Brandolini, Mathias Verraes,
        Rebecca Wirfs-Brock, Nick Tune, and many more.
      
 
      - 
        Domain Language eLearning
        - Using our video lessons with Eric Evans, author of the original book
        on Domain-Driven Design (DDD), teach yourself techniques for evolving
        practical models that improve your software — not just your documents.
      
 
      - 
        Greg Young’s CQRS Class
        - These videos include the entirety of Greg Young’s DDD, CQRS, and Event
        Sourcing class.
      
 
      - 
        Distilling Domain-Driven Design
        - Vaughn Vernon’s online training course.
      
 
      - 
        Advanced Distributed Systems Design
        - Online training course from Udi Dahan. Udi’s live training schedule
        can be found here.
      
 
      - 
        Nomad PHP
        - Introduction to Event Sourcing and CQRS.
      
 
      - 
        Event Sourcery - Introduction
        to DDD, CQRS, and Event Sourcing.
      
 
      - 
        Mixter - CQRS and Event
        Sourcing Koans.
      
 
      - 
        Pluralsight
        
      
 
      - 
        Rails + Domain Driven Design Workshop
        - Introduction to DDD, fundamentals of CQRS & Event Sourcing for
        Ruby/Rails developers.
      
 
      - 
        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.
      
 
      - 
        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.
      
 
      - 
        DDD Workshop by Xebia
        - public and in-house Domain-driven design workshops from foundation to
        professional level.
      
 
    
    Video Collections
    
    
    
      - 
        DDD/CQRS Google Group
        - An active mailing list and an excellent resource to ask questions and
        learn fine-grained details about DDD/CQRS.
      
 
      - 
        Domain Driven Design Yahoo Group
        - This group is for discussion of the domain-driven style of designing
        software, and the book by Eric Evans, Domain-Driven Design: Tackling
        Complexity in the Heart of Business Software. Questions and discussion
        of the book content is welcome here, as well as sharing of experiences
        applying DDD, and discussions of the topic in general.
      
 
      - 
        DDDinPHP Google Group
        - The place to discuss Domain-Driven Design, CQRS, Event Sourcing, Model
        Storming, Hexagonal Architecture, Distributed Systems, Reactive… in the
        context of PHP.
      
 
      - 
        DDD in Ruby subreddit -
        A subreddit for Ruby developers interested in Domain-Driven Design.
      
 
      - 
        EventStormers Google+ Community
        - A public discussion group for everybody interested in EventStorming,
        and related themes.
      
 
      - 
        DDD/CQRS/ES Slack
        - A slack team for those who want to chat about Domain-Driven Design,
        CQRS, Event Sourcing and sometimes random things. Main channel is
        language and framework agnostic.
      
 
      - 
        Domain StoryTelling Slack
        - A slack team about Domain StoryTelling. It is currently invite only,
        but you can ask
        [@hofstef](https://twitter.com/hofstef) for an invitation. The homepage is at
        domainstorytelling.org.
      
 
      - 
        Software Engineering Stack Exchange
        - Software Engineering Stack Exchange questions tagged
        domain-driven-design.
      
 
      - 
        Code Review Stack Exchange
        - Code Review Stack Exchange questions tagged
        domain-driven-design.
      
 
      - 
        Stack Overflow
        - Stack Overflow questions tagged domain-driven-design.
      
 
      - 
        Advanced Topics in Event Sourcing / CQRS / DDD
        - Advanced Topics in Event Sourcing / CQRS / DDD list compiled and
        maintaned by @sebastianharko.
      
 
      - 
        Quora
        - Questions tagged domain-driven-design.
      
 
      - 
        wolkenkit Slack - A Slack
        team on DDD, event-sourcing, CQRS and wolkenkit.
      
 
      - 
        Awesome Event Storming
        - awesome list that focuses only on Event Storming.
      
 
      - 
        Virtual Domain-driven design community
        - Online meetups with panel discussions, online collaborations and
        resource sharing.
      
 
      - 
        Domain-driven design heuristics
        - Domain-Driven Design Heuristics is a community driven site to document
        and discuss about Design Heuristics.
      
 
    
    Blogs
    
      - 
        Nick Chamberlain - Helpful
        development and design advice for .NET developers.
      
 
      - 
        Ardalis.com - Steve Smith.
        Pluralsight author and author of
        DDD Fundamentals
        course and Microsoft
        eShopOnWeb sample app.
      
 
      - 
        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 domain driven design.
      
 
      - 
        Derek Comartin - Articles under the
        category Domain Driven Design.
      
 
      - 
        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
        cqrs.
      
 
      - 
        Oasis Digital
        - Content by Oasis Digital tagged under cqrs.
      
 
      - 
        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
        Microsoft .NET - Architecting Applications for the Enterprise (2nd
          Edition).
      
 
      - 
        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
        Visual Collaboration Tools
        and host of the
        Software Crafts Podcast
      
 
    
    Sample Projects
    GO
    
    .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.
      
 
      - 
        Companion Code for Microsoft .NET Architecting Applications for the
          Enterprise
        - An event based Micro ERP.
      
 
      - 
        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
        CoreDdd 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:
        EventFlow,
        EventStore,
        RabbitMQ,
        MongoDB,
        PostgreSQL,
        Docker
      
 
      - 
        Fohjin - Example
        project that accompanies Mark Nijhof’s
        CQRS 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.
      
 
      - 
        Microsoft Patterns and Practices: CQRS Journey Sample Code
        - Sample code from CQRS Journey.
      
 
      - 
        Modular Monolith
        - Full Modular Monolith .NET application with Domain-Driven Design
        approach.
      
 
      - 
        NLayerAppV3
        (.Net Core Preview 2) - a N-Layered Architecture Sample Project.
      
 
      - 
        Photostock CQRS-DDD Example
      
 
      - 
        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,
        video.
      
 
      - 
        Simple CQRS in F#
        - Greg Young’s SimpleCQRS in F#.
      
 
      - 
        SimpleCQRS - Greg
        Young’s “Simplest Thing” CQRS with Event Sourcing project.
      
 
      - 
        TodoMVC-DDD-CQRS-EventSourcing
        - Implementation of basic Todo app via tastejs/todomvc in C#/Typescript
        with eventsourcing, cqrs, and domain driven design
      
 
    
    Haskell
    
      - 
        Eventuria gsd - Haskell
        todo list reactive application with DDD, CQRS and Event Sourcing, FRP.
      
 
    
    JavaScript
    
    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
        http://dddsample.sourceforge.net/)
      
 
      - 
        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).
        The code 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
        Java DDD sample application
        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.
      
 
    
    PHP
    
    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 
go test. 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.
      
 
    
    .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.
      
 
      - 
        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
        http://geteventflow.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:
        The Beating Heart of CQRS, or Actor-Based Message Routing on the
          CLR
        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.
      
 
    
    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.
      
 
    
    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.
      
 
    
    JavaScript
    
    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.
      
 
    
    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.
      
 
    
    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.
      
 
    
    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
    
    
    
      - 
        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
        print-out template, as well as open-source online tool,
        WPS Modeler (source).
      
 
    
    License
    
      
    
    
      To the extent possible under law,
      Nick Chamberlain has waived all
      copyright and related or neighboring rights to this work.