Clean Architecture
What is Clean Architecture?
The Dependency Rule
┌─────────────────────────────────────┐
│ External (UI, Database, etc) │ ← Outer Layer
├─────────────────────────────────────┤
│ Infrastructure & Frameworks │
├─────────────────────────────────────┤
│ Application (Use Cases) │
├─────────────────────────────────────┤
│ Domain (Entities, Business) │ ← Inner Layer (Core)
└─────────────────────────────────────┘
Dependencies flow: Outer → Inner (never Inner → Outer)The Four Layers
1. Domain Layer (Core / Entities)
2. Application Layer (Use Cases)
3. Infrastructure Layer
4. Presentation Layer (UI / API)
Project Structure
Recommended Folder Structure
CQRS Pattern in Clean Architecture
Commands (Write Operations)
Queries (Read Operations)
Controller with CQRS
MediatR Integration
Commands with MediatR
Queries with MediatR
Controller with MediatR
Validation with FluentValidation
Validator
MediatR Pipeline Behavior for Validation
Repository Pattern
Generic Repository
Unit of Work Pattern
Exception Handling
Domain Exceptions
Global Exception Middleware
Testing Strategy
Domain Tests
Application Tests
Best Practices
1. Keep Domain Logic Pure
2. Use Value Objects
3. Separate Read and Write Models
4. Use DTOs for API Boundaries
5. Dependency Injection Configuration
Quick Reference: Clean Architecture Rules
✅ DO
❌ DON'T
Dependency Flow Diagram
Last updated