Skip to main content

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.
Her şey gerçek koddan çıkarılmıştır; örnek sınıf adları, dosya yolları ve config anahtarları repodaki gerçek implementasyonu yansıtır.

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ı

Yardım ve katkı

Sorun veya geri bildirim için repo issue’larını kullanın. Bu doküman repo ile birlikte versiyonlanır — her özellik PR’ı ilgili sayfayı da güncellemelidir.