A Clean Architecture solution template for ASP.NET Core with separate Core, Use Cases, Infrastructure and Web projects.
evolutionary-architecture/evolutionary-architecture-by-example
A step-by-step .NET 9 example repository showing how a fitness-studio system evolves from a simple monolith to a modular monolith, microservices and tactical DDD.
- Stars
- 3,577
- Forks
- 550
- Open issues
- 15
- Last commit
- 12 days ago
What is it?
Evolutionary Architecture by Example is a teaching repository for .NET software architecture. It follows a fictional fitness studio application called Fitnet through four chapters: starting as a single well-organized project, separating modules into purpose-built projects, extracting a first microservice with a real message queue, and finally applying tactical Domain-Driven Design such as value objects, aggregates and domain events.
The repository also covers the strategic side of the work: domain decomposition into subdomains with Event Storming and Domain Storytelling, defining bounded contexts, and choosing how much architecture each module needs. Each chapter has its own guide and interactive diagrams, and architecture decisions are recorded in a decision log.
The code is written in C# on .NET 9 with minimal APIs, and uses libraries such as MediatR, Dapper, Entity Framework, FluentValidation, .NET Aspire and Testcontainers. Frontend choice, logging and contract testing are left to the reader.
Key features
- 01Walks through four chapters that evolve one codebase from a single project to microservices
- 02Shows how to separate modules by their complexity instead of applying one architecture everywhere
- 03Covers domain decomposition with Event Storming and bounded context design
- 04Demonstrates tactical DDD concepts including value objects, aggregates and domain events
- 05Built with C# and .NET 9 using minimal APIs and MediatR
Use cases
- Learning when to move from a monolith to a modular monolith or microservices
- Studying how to apply DDD incrementally in an existing .NET codebase
- Preparing architecture discussions with a concrete, evolving example
- Exploring how to introduce a message queue between modules
Things to know
- The frontend is not included; the README leaves frontend technology choice to the reader.
- Logging and contract testing are left to the reader, with Serilog and Pact Net suggested but not provided.
In collections
Topics
FAQ
- What is evolutionary-architecture-by-example?
- A step-by-step .NET 9 example repository showing how a fitness-studio system evolves from a simple monolith to a modular monolith, microservices and tactical DDD. Evolutionary Architecture by Example is a teaching repository for .NET software architecture. It follows a fictional fitness studio application called Fitnet through four chapters: starting as a single well-organized project, separating modules into purpose-built projects, extracting a first microservice with a real message queue, and finally applying tactical Domain-Driven Design such as value objects, aggregates and domain events.
- Is evolutionary-architecture-by-example free to use? What license does it have?
- evolutionary-architecture-by-example is open source under the MIT license. Check the license terms before using it in commercial products.
- Is evolutionary-architecture-by-example still maintained?
- Actively maintained. The last commit to evolutionary-architecture-by-example was on Oct 26, 2026.
- What can I use evolutionary-architecture-by-example for?
- Learning when to move from a monolith to a modular monolith or microservices Studying how to apply DDD incrementally in an existing .NET codebase Preparing architecture discussions with a concrete, evolving example Exploring how to introduce a message queue between modules
- Where can I get evolutionary-architecture-by-example?
- The source code and installation instructions are on GitHub: https://github.com/evolutionary-architecture/evolutionary-architecture-by-example
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
An opinionated, open-source application framework on ASP.NET Core for building enterprise software with DDD, modularity and multi-tenancy.
A documentation tool for software architecture that catalogs domains, services, events, messages and schemas for teams and AI agents.
A reference Android app in Kotlin showing Clean Architecture, modular feature design, Jetpack Compose, and Gradle convention plugins.
A library of C4 model macros for PlantUML that lets you draw software architecture diagrams as plain-text code.
An agent skill that has AI coding tools draw the project's architecture, constraints and change scope as an HTML map, and wait for confirmation before editing code.