How ardalis/verticalcleanmodularmicroservices works
This repository is a set of runnable .NET examples showing one order-management domain evolving across architectural styles—not one application spanning all four stages. The main workflow is a user accessing product and cart/order features through an API; later examples separate use cases and infrastructure, then divide capabilities into modules or independently deployable services. The README documents the architecture progression and major capabilities. Source excerpts show startup endpoint registration and product-query behavior, but not most runtime wiring, especially in the modular and microservice examples.
Main entry points: Nimble.Modulith.Web/Program.cs Module host · OrderDemo.Api/Program.cs API startup · Nimble.Modulith.Web/Program.cs Service host · OrderDemo.CleanArch.Web/Program.cs Web endpoints
Components 25
Vertical Slice
- API startup
01-VerticalSlice/src/OrderDemo.Api/Program.cs - Product features
01-VerticalSlice/src/OrderDemo.Api/ProductFeature - Cart features
01-VerticalSlice/src/OrderDemo.Api/CartFeature - Order queries
01-VerticalSlice/src/OrderDemo.Api/OrderFeature - EF data
01-VerticalSlice/src/OrderDemo.Api/Data/AppDbContext.cs
Clean Architecture
- Web endpoints
02-CleanArchitecture/src/OrderDemo.CleanArch.Web/Program.cs - Use cases
02-CleanArchitecture/src/OrderDemo.CleanArch.UseCases - Domain aggregates
02-CleanArchitecture/src/OrderDemo.CleanArch.Core - Data and email
02-CleanArchitecture/src/OrderDemo.CleanArch.Infrastructure - Application database
02-CleanArchitecture/src/OrderDemo.CleanArch.Infrastructure/Data/AppDbContext.cs
Modular Monolith
- Module host
03-ModularMonolith/src/Nimble.Modulith.Web/Program.cs - Customers and orders
03-ModularMonolith/src/Nimble.Modulith.Customers - Product catalog
03-ModularMonolith/src/Nimble.Modulith.Products - Identity and users
03-ModularMonolith/src/Nimble.Modulith.Users - Email module
03-ModularMonolith/src/Nimble.Modulith.Email - Reporting module
03-ModularMonolith/src/Nimble.Modulith.Reporting
Microservices
- Service host
04-Microservices/src/Nimble.Modulith.Web/Program.cs - Customer service
04-Microservices/src/Nimble.Modulith.Customers - Product service
04-Microservices/src/Nimble.Modulith.Products - Email service
04-Microservices/src/Nimble.Modulith.Email.Web/Program.cs - Reporting service
04-Microservices/src/Nimble.Modulith.Reporting
Clean Vertical
- Web features
05-CleanVertical/src/OrderDemo.CleanArch.Web - Use cases
05-CleanVertical/src/OrderDemo.CleanArch.UseCases - Data infrastructure
05-CleanVertical/src/OrderDemo.CleanArch.Infrastructure
Other components
- Shopper
Connections 23
- Shopper → API startup: uses
README.md - API startup → Product features: maps endpoints
01-VerticalSlice/src/OrderDemo.Api/Program.cs - API startup → Cart features: maps endpoints
01-VerticalSlice/src/OrderDemo.Api/Program.cs - API startup → Order queries: maps endpoint
01-VerticalSlice/src/OrderDemo.Api/Program.cs - API startup → EF data: registers context
01-VerticalSlice/src/OrderDemo.Api/Program.cs - API startup → Web endpoints: evolves to
README.md - Web endpoints → Use cases: separates concerns
- Use cases → Domain aggregates: uses domain
- Data and email → Application database: implements persistence
- Web endpoints → Module host: evolves to
README.md - Module host → Customers and orders: hosts modules
- Module host → Product catalog: hosts modules
- Module host → Identity and users: hosts modules
- Module host → Email module: hosts modules
- Module host → Reporting module: hosts modules
- Module host → Service host: evolves to
README.md - Service host → Customer service: orchestrates services
- Service host → Product service: orchestrates services
- Service host → Email service: orchestrates services
- Service host → Reporting service: orchestrates services
- Web endpoints → Web features: alternative organization
- Web features → Use cases: separates use cases
- Use cases → Data infrastructure: queries through service