How genocs/clean-architecture-template works
This is a Clean Architecture/DDD .NET template for a customer-account service. Its principal workflow is a client request entering a versioned Web API controller, invoking an application use case, and returning a presenter-built response; the domain models customers, accounts, and money transactions. The tree and sampled controllers support the API-to-use-case wiring, while README capabilities establish the database, broker, and background-worker options. Use-case internals and most worker/broker wiring were not sampled, so those connections are intentionally limited.
Main entry points: UseCases Account use cases · Repositories Repository interfaces · Program.cs Versioned REST API · V1 Account endpoints
Components 22
Web presentation
- Versioned REST API
src/template/src/WebApi/Program.cs - Account endpoints
src/template/src/WebApi/UseCases/V1 - Customer endpoints
src/template/src/WebApi/UseCases/V1 - Account API v2
src/template/src/WebApi/UseCases/V2/GetAccountDetails - Response presenters
src/template/src/Infrastructure/PersistenceLayer/Presenters
Application workflows
- Account use cases
src/template/src/Application/UseCases - Use-case contracts
src/template/src/Application/Boundaries - Repository interfaces
src/template/src/Application/Repositories - Application services
src/template/src/Application/Services
Domain model
- Customers and accounts
src/template/src/Domain/Accounts - Money and value objects
src/template/src/Domain/ValueObjects
Persistence and integrations
- In-memory storage
src/template/src/Infrastructure/PersistenceLayer/InMemory - MongoDB storage
src/template/src/Infrastructure/PersistenceLayer/MongoDb - SQL Server storage
src/template/src/Infrastructure/PersistenceLayer/SQLServer - External API clients
src/template/src/Infrastructure/WebApiClient/ExternalServices
Async messaging
- Commands and events
src/template/src/Contracts - Broker client options
src/template/src/Infrastructure - Background worker
src/template/src/Worker/Program.cs - Message handlers
src/template/src/Worker
Other components
- API client
- Backend services
- Message brokers
Connections 22
- API client → Versioned REST API: sends request
- Versioned REST API → Account endpoints: routes requests
- Versioned REST API → Customer endpoints: routes requests
- Account endpoints → Account use cases: executes use case
- Customer endpoints → Account use cases: executes use case
- Account API v2 → Account use cases: executes use case
- Account endpoints → Response presenters: returns view model
- Customer endpoints → Response presenters: returns view model
- Account API v2 → Response presenters: returns view model
- Account use cases → Use-case contracts: uses contracts
- Account use cases → Repository interfaces: repository abstractions
- Customers and accounts → Money and value objects: uses values
- Repository interfaces → In-memory storage: implemented by
- Repository interfaces → MongoDB storage: implemented by
- Repository interfaces → SQL Server storage: implemented by
- Application services → External API clients: implemented by
- External API clients → Backend services: calls APIs
- Background worker → Message handlers: hosts handlers
- Message handlers → Commands and events: handles messages
- Background worker → Broker client options: configures broker
- Broker client options → Message brokers: connects to
- Message handlers → Message brokers: receives messages