Bu doküman kimin için?
Bu doküman, Diyanet Clean Architecture şablonu üzerinde geliştirme yapacak veya bu şablonla kurulmuş bir sistemi işletecek herkes için yazıldı:- Geliştirici — yeni özellik eklerken hangi katmana ne yazılır, BuildingBlocks nasıl kullanılır.
- DevOps / SRE — Docker compose dosyaları, ortam değişkenleri, Keycloak provisioning, gözlemlenebilirlik.
- Mimar / Tech Lead — tasarım kararları, DDD sınırları, event-driven akış, çoklu instance senkronizasyonu.
Sistemin tek paragrafta özeti
.NET 10 üzerinde Clean Architecture + DDD + CQRS ilkeleriyle yazılmış, çift-realm Keycloak SSO ile vatandaş ve personel kimliklerini ayrıştıran, HybridCache (L1 in-memory + L2 Redis) ile düşük latency sunan, MassTransit + RabbitMQ Outbox pattern’iyle güvenli event yayını yapan, EF Core SaveChanges interceptor ile her aggregate’a audit (CreatedBy/UpdatedBy/DeletedBy) ve soft-delete yazan, iki React SPA (Website + Admin) içeren ve 3 ortamda (dev / stage / prod) Docker Compose ile dağıtılabilen bir monorepo şablonu.
Üst düzey mimari diyagram
Doküman haritası
Ön Gereksinimler
.NET 10, Node 22, Docker, IDE seçenekleri (VS 2026, VS Code, Cursor, Antigravity).
Hızlı Başlangıç
docker compose up -d --build ile local’i ayağa kaldır.Mimari
Katmanlar, bağımlılık akışı, tasarım kararları.
Domain (DDD)
Aggregate’ler, Value Object’ler, Domain Event’ler, Factory’ler.
Application (CQRS)
Command/Query + Handler, Pipeline Behavior, validasyon, mapping.
Veri Katmanı (EF Core)
DbContext, audit interceptor, soft-delete, migration, seed.
BuildingBlocks
20 paylaşılan modül — Keycloak, Cache, EventBus, JWT, OTP…
Event-Driven Akış
Domain → Outbox → RabbitMQ → Integration event handler.
Operasyon
Docker dev / stage / prod, nginx-proxy, gözlemlenebilirlik.
Teknoloji yığını
| Katman | Teknoloji |
|---|---|
| Runtime | .NET 10 (net10.0) |
| Web | ASP.NET Core 10 — Controllers + MediatR |
| Veritabanı | PostgreSQL 16 (EF Core 10.0.7, snake_case) |
| Identity | Keycloak 26 (çift-realm: vatandaş + personel) |
| Cache L1 | Microsoft.Extensions.Caching.Hybrid (in-memory) |
| Cache L2 | Redis 7 (StackExchange.Redis + distributed lock) |
| Message Broker | RabbitMQ 3.13 + rabbitmq_delayed_message_exchange |
| Event Bus | MassTransit 8.5 (EF Core Outbox) |
| Background Jobs | Hangfire (PostgreSQL storage) |
| Logging | Serilog 10 → Seq |
| Metrics / Tracing | OpenTelemetry → Prometheus / OTLP |
| API Docs | NSwag (OpenAPI) + Scalar + Swagger UI |
| SPA | React 19 + Vite 6 + TypeScript 5.8 — Admin + Website |
| Reverse Proxy (stage/prod) | nginx-proxy + acme-companion (Let’s Encrypt) |
| Dağıtım | Docker Compose (ortam bazlı overlay’ler) |