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ı

KatmanTeknoloji
Runtime.NET 10 (net10.0)
WebASP.NET Core 10 — Controllers + MediatR
VeritabanıPostgreSQL 16 (EF Core 10.0.7, snake_case)
IdentityKeycloak 26 (çift-realm: vatandaş + personel)
Cache L1Microsoft.Extensions.Caching.Hybrid (in-memory)
Cache L2Redis 7 (StackExchange.Redis + distributed lock)
Message BrokerRabbitMQ 3.13 + rabbitmq_delayed_message_exchange
Event BusMassTransit 8.5 (EF Core Outbox)
Background JobsHangfire (PostgreSQL storage)
LoggingSerilog 10 → Seq
Metrics / TracingOpenTelemetry → Prometheus / OTLP
API DocsNSwag (OpenAPI) + Scalar + Swagger UI
SPAReact 19 + Vite 6 + TypeScript 5.8 — Admin + Website
Reverse Proxy (stage/prod)nginx-proxy + acme-companion (Let’s Encrypt)
DağıtımDocker Compose (ortam bazlı overlay’ler)

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.