ASP.NET Core Web API tabanlı, Clean Architecture prensiplerine göre tasarlanmış bir Todo uygulaması.
Proje Clean Architecture (Temiz Mimari) prensiplerine göre katmanlı yapıda organize edilmiştir. Bağımlılıklar her zaman içe doğru akar; dış katmanlar iç katmanları referans alır, iç katmanlar dış katmanları bilmez.
┌────────────────────────────────────────────────────────┐
│ TodoApi.Presentation │ ← API, Controllers, Middleware
├────────────────────────────────────────────────────────┤
│ TodoApi.Application │ ← Use Cases, Services, DTOs
├────────────────────────────────────────────────────────┤
│ TodoApi.Infrastructure │ TodoApi.Shared │ TodoApi.Core │ ← Implementations, Cross-cutting
├────────────────────────────────────────────────────────┤
│ TodoApi.Domain │ ← Entities, Repository Contracts
└────────────────────────────────────────────────────────┘
Çekirdek katman. En içte yer alır, hiçbir katmana bağımlı değildir.
- Entities: Domain modelleri (
TodoEntity,UserEntity,EntityBase) - Repository Contracts: Veri erişim soyutlamaları (
ITodoRepository,IUserRepository) - Enums: Domain enum'ları (
ETodoStatus)
Uygulama katmanı. İş mantığı ve use case'ler burada tanımlanır.
- Contracts/ServiceContracts: Servis arayüzleri (
IAuthService,IUserService) - Services: Servis implementasyonları
- DTOs: Request/Response veri transfer objeleri
- Helpers: Token oluşturma gibi yardımcı sınıflar
Altyapı katmanı. Veri erişimi ve harici sistem entegrasyonları.
- Persistence:
AppDbContext, Entity Framework Core yapılandırması - Repositories: Repository implementasyonları (
TodoRepository,UserRepository) - Configurations/ModelCreatings: EF Core entity konfigürasyonları (Fluent API)
Sunum katmanı. HTTP API, giriş noktası.
- Controllers: API controller'ları
- Configurations: Uygulama başlangıç konfigürasyonları (Auth, DB, DI, Swagger)
- Handlers: Exception handling middleware
- Utils: API response yardımcıları
Ortak altyapı. Konfigürasyon ve sabitler.
- Configurations:
AppSettings,JwtSettings,ConnectionSettings - Constants: Uygulama sabitleri
- Utils: Claim gibi yardımcı araçlar
Paylaşılan katman. Katmanlar arası ortak tipler.
- Responses:
ServiceResponse,GeneralResponsegibi standart response tipleri - ValidationRules: FluentValidation kuralları
- Enums: Servis yanıt tipleri (
EServiceResponseType)
| Katman | Teknolojiler |
|---|---|
| Framework | .NET 8, ASP.NET Core |
| ORM | Entity Framework Core 9 |
| Veritabanı | PostgreSQL (Npgsql) / In-Memory (geliştirme) |
| Kimlik Doğrulama | JWT Bearer |
| Validasyon | FluentValidation |
| API Dokümantasyonu | Swagger / OpenAPI |
Presentation → Application, Infrastructure, Core, Domain, Shared
Application → Domain, Shared
Infrastructure → Domain
Core → (bağımsız)
Shared → (bağımsız)
Domain → (bağımsız)
TodoApi/
├── TodoApi.sln
├── TodoApi.Domain/ # Çekirdek domain
├── TodoApi.Application/ # İş mantığı
├── TodoApi.Infrastructure/ # Veri erişimi
├── TodoApi.Presentation/ # Web API
├── TodoApi.Core/ # Ortak konfigürasyon
└── TodoApi.Shared/ # Paylaşılan tipler
Uygulama Program.cs üzerinden modüler konfigürasyon sınıfları ile yapılandırılır:
- Settings: Ortam değişkenleri ve
appsettingsyükleme - ServiceConfigurations: Genel servis kayıtları
- DBConfigurations: Entity Framework ve veritabanı
- AuthConfigurations: JWT kimlik doğrulama
- SwaggerConfigurations: API dokümantasyonu
- DIConfigurations: Bağımlılık enjeksiyonu
- AppConfigurations: Middleware pipeline
dotnet restore
dotnet run --project TodoApi.Presentation