Explore open-source books, tutorials, and guides for implementing domain-driven design patterns in software architecture.
A comprehensive Domain-Driven Design example with problem space strategic analysis and various tactical patterns.
This repository provides a practical, code-heavy implementation of Domain-Driven Design patterns in Java, serving as a concrete reference for applying both strategic and tactical concepts in a real-world architectural context.
This project provides a structured template for building enterprise applications using a modular monolith architecture. It demonstrates how to organize complex business logic into independent, domain-specific modules that remain contained within a single deployment unit. The architecture enforces strict boundaries between components to minimize coupling and complexity. It utilizes domain-driven design principles to map software components directly to real-world business concepts, ensuring that logic remains independent of infrastructure concerns. Communication between these isolated modules is handled through asynchronous domain events, while a centralized bus pattern decouples request handling from core business logic. The codebase incorporates practices for maintaining long-term technical strategies, including the use of architectural decision records to document significant design choices. By utilizing persistence-ignorant modeling and internal access modifiers, the framework ensures that domain entities remain testable and protected from cross-module dependency leakage.
This repository serves as a practical, code-heavy implementation of Domain-Driven Design patterns within a modular monolith, providing a concrete reference for applying strategic and tactical design concepts in a real-world .NET application.
EquinoxProject is an ASP.NET 9 web application template and reference implementation for building enterprise software. It provides a structural boilerplate centered on clean architecture, domain-driven design, and the separation of read and write operations through a command query responsibility segregation framework. The project incorporates event sourcing to track the history of business entities as a sequence of events for auditing and state reconstruction. It utilizes a layered approach to decouple business logic from external dependencies and frameworks. The system includes capabilities for stateless token authentication to secure API endpoints and a fluent validation pipeline to enforce data integrity. It further supports the unit of work pattern for atomic transactions and automated architecture testing to verify structural boundaries and dependency rules.
This repository provides a comprehensive reference implementation and boilerplate for applying Domain-Driven Design, CQRS, and Clean Architecture in ASP.NET, serving as a practical educational resource for developers looking to see these patterns in action.
eShopOnContainers is a .NET microservices reference application designed to demonstrate cloud-native architecture patterns. It serves as a sample distributed system that implements domain-driven design and utilizes containerized services. The project is developed as a cross-platform sample compatible with Windows, Linux, and macOS. It utilizes Docker for containerized application deployment and supports orchestration via Azure Kubernetes Service to manage the scaling and availability of its services. The system covers microservices architecture design, asynchronous service communication, and Kubernetes cluster orchestration to maintain production availability across distributed compute nodes.
This is a comprehensive reference application that provides practical, code-based implementations of Domain-Driven Design patterns within a microservices architecture, serving as a valuable hands-on learning resource.
eShopOnWeb is a reference application for ASP.NET Core that demonstrates a sample e-commerce site. It serves as a template for building scalable services using domain-driven design to separate business logic from infrastructure and data access. The project implements a decoupled messaging pattern through a request pipeline to separate web controllers from application logic. It utilizes a repository pattern to abstract data persistence and isolate the core application logic from the specific database storage mechanism. The application covers a broad surface of web capabilities, including user identity management, server-side result caching, and system health monitoring. It includes a data access layer for SQL Server and is packaged as a containerized web application for consistent deployment across different hosting environments.
This repository provides a comprehensive, code-based reference implementation of Domain-Driven Design patterns within an ASP.NET Core architecture, serving as a practical educational resource for applying strategic and tactical design concepts.
This project is a collection of software engineering principles and architectural design patterns designed to minimize the mental effort required to understand and maintain source code. It serves as a guide for implementing clean code methodologies and architectural simplification to reduce the overall cognitive load on developers. The framework emphasizes aligning module boundaries and ubiquitous language with business stakeholders to prevent architectural ripple effects. It advocates for balancing service granularity to avoid the overhead of distributed monoliths and suggests favoring object composition over deep class hierarchies to keep behavior transparent. The project covers a broad range of capabilities, including code readability optimization through the flattening of nested logic and the simplification of complex conditionals. It also provides guidance on software architecture design, focusing on the reduction of architectural indirection and the removal of superfluous abstraction layers. Additionally, it addresses API error design by promoting the use of self-describing strings over numeric status codes.
This repository provides a comprehensive collection of architectural principles and design patterns that align closely with Domain-Driven Design concepts like ubiquitous language and modular boundaries, serving as a practical guide for implementing these strategies in software.