A structured .NET 10 backend reference application focused on Clean Architecture, explicit domain rules, and controlled dependencies.
- Strict layering
- Explicit domain workflow rules
- Controlled dependencies
- Result-based error handling
- Testable application logic
The goal is not feature breadth, but structural clarity, explicit boundaries, and reviewable design decisions.
Full project documentation is available on GitHub Pages.
The documentation site is the primary deep dive for architecture, ADRs, repository structure, and API details.
- Strict inward dependency flow across Domain, Application, Infrastructure, and API
- Result-based application flow with no exceptions crossing application boundaries
- RFC 9457 ProblemDetails as the HTTP error contract
- PostgreSQL and in-memory persistence behind the same application ports
- Explicit unit-of-work boundary for controlled writes
- End-to-end tests cover both persistence implementations
┌─────────────────────────────────────┐
│ Web (Blazor) │
├─────────────────────────────────────┤
│ API (Minimal API) │
├───────────────────┬─────────────────┤
│ Infrastructure │ Infra.InMemory │
├───────────────────┴─────────────────┤
│ Application │
├─────────────────────────────────────┤
│ Domain │
└─────────────────────────────────────┘
Layer responsibilities:
- Domain — business rules, domain errors, events
- Application — use cases, validation, ports, unit-of-work coordination
- Contracts — versioned request/response models
- Infrastructure / Infrastructure.InMemory — persistence adapters behind application ports
- API — Minimal API endpoints and ProblemDetails mapping
- Web — optional UI for exercising the workflow
Dependency direction is strictly inward.
- .NET 10 / C#
- ASP.NET Core Minimal API
- Blazor
- EF Core
- PostgreSQL
- xUnit
MIT. See LICENSE.