finds.dev← search

// the find

jasontaylordev/CleanArchitecture

★ 19,975 · C# · MIT · updated Apr 2026

Clean Architecture Solution Template for ASP.NET Core

A .NET solution template implementing Clean Architecture (Domain/Application/Infrastructure/Web layers) with CQRS via MediatR, EF Core, and optional Angular or React frontends. Actively maintained and tracks current .NET releases — currently on .NET 10. Aimed at teams starting a new ASP.NET Core project who want architectural guardrails baked in from day one.

- Genuinely well-layered: Domain has zero outward dependencies, Application only knows about domain interfaces, Infrastructure implements them — the dependency rule is actually enforced, not just described.

- Test coverage spans multiple levels: unit tests for behaviours/mappings, functional tests with Respawn for database reset, and Playwright-based acceptance tests wired through Aspire. That's more than most templates ship.

- ADRs in /docs/decisions explain why specific choices were made (e.g. EF Core in Application layer, MediatR contracts in Domain), which saves the next developer from relitigating settled debates.

- Multiple database providers (SQLite/PostgreSQL/SQL Server) and frontend options are first-class template flags, not afterthoughts — the appsettings split and conditional Aspire wiring work correctly.

- AutoMapper is still present; the .NET community has largely moved away from it for good reason (runtime mapping errors, obscured data flow). Mapster or manual projection would be a better default in 2025.

- The example domain is a Todo app, which means the template teaches nothing about aggregate design, domain services, or bounded contexts — real projects end up cargo-culting the flat entity structure.

- CQRS is simulated rather than enforced: reads and writes both go through the same IApplicationDbContext, so nothing prevents a command handler from doing a query-heavy operation or a query handler from accidentally mutating state.

- Both Angular and React client apps ship as full directories inside the repo/template, which inflates generated solution size significantly and means frontend tooling upgrades (e.g. Angular 21 → 22) require touching the template rather than just updating a package.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →