# Diyanet Clean Architecture > Diyanet Clean Architecture şablonu — .NET 10 tabanlı DDD + CQRS + Event-Driven mimari, BuildingBlocks, Keycloak, HybridCache, Docker ve operasyon rehberi (geliştirici dokümantasyonu). ## Docs - [Controller'lar](https://docs.diyanet.pro/api/controllers.md): İnce controller deseni, rota grupları, ResponseWrapper ve RFC 7807 hata yanıtları - [Frontend (Admin + Website)](https://docs.diyanet.pro/api/frontend.md): İki React 19 + Vite SPA, axios interceptor, Keycloak entegrasyonu, build - [OpenAPI, Swagger & Scalar](https://docs.diyanet.pro/api/openapi.md): NSwag document generation, üç security scheme, Keycloak login, client üretimi - [API Genel Bakış](https://docs.diyanet.pro/api/overview.md): Program.cs servis kayıt sırası ve middleware pipeline'ı - [Application Yetkilendirme](https://docs.diyanet.pro/application/authorization.md): IRequirePermissions, IRequireTenantAccess, IRequirePermission marker'ları ve context soyutlamaları - [Command & Query Deseni](https://docs.diyanet.pro/application/commands-queries.md): CQRS handler deseni, klasör konvansiyonu ve gerçek SignUpUser / VerifyOtp / admin query örnekleri - [Application Katmanı](https://docs.diyanet.pro/application/overview.md): Use-case orkestrasyonu, MediatR CQRS, klasör yapısı ve request akışı - [Pipeline Behaviors](https://docs.diyanet.pro/application/pipeline-behaviors.md): MediatR IPipelineBehavior zinciri: Exception, Authorization, Validation, Permission - [Validation & Mapping](https://docs.diyanet.pro/application/validation-mapping.md): FluentValidation custom kuralları, AutoMapper IMapFrom convention ve pagination modeli - [Bağımlılık Akışı](https://docs.diyanet.pro/architecture/dependency-flow.md): Katmanlar arası referans yönü, izin verilen bağımlılıklar ve build sırası - [Tasarım Kararları](https://docs.diyanet.pro/architecture/design-decisions.md): Önemli mimari kararlar ve gerekçeleri (ADR özeti) - [Mimari Genel Bakış](https://docs.diyanet.pro/architecture/overview.md): Clean Architecture katmanları, bağımlılık yönü, DDD sınırları - [Çözüm Yapısı](https://docs.diyanet.pro/architecture/solution-structure.md): DiyanetCleanArchitecture.slnx içindeki projeler, türleri ve referans matrisi - [BuildingBlocks.Security.BotProtection](https://docs.diyanet.pro/building-blocks/bot-protection.md): Google reCAPTCHA v3 doğrulaması — Polly retry'lı dayanıklı HTTP istemcisi, skor + action + hostname kontrolü. - [BuildingBlocks.Caching](https://docs.diyanet.pro/building-blocks/caching.md): Hibrit L1+L2 cache, tag-based invalidation ve Redis distributed cache/lock. - [BuildingBlocks.DeviceDetector](https://docs.diyanet.pro/building-blocks/device-detector.md): İstemci IP çözümleme, cihaz tespiti ve risk skoru tabanlı güven değerlendirmesi. - [BuildingBlocks.EventBus](https://docs.diyanet.pro/building-blocks/event-bus.md): MassTransit + RabbitMQ integration event dağıtımı — EF Outbox, retry, delayed redelivery. - [BuildingBlocks.FileServer](https://docs.diyanet.pro/building-blocks/file-server.md): Statik dosya sunumu — auth-aware özel file provider, dizin listeleme ve query-param token ile koruma. - [BuildingBlocks.Hangfire.MediatR.Extensions](https://docs.diyanet.pro/building-blocks/hangfire-mediatr.md): MediatR IRequest'lerini Hangfire job olarak serialize edip arka planda Send() ile çalıştırma köprüsü. - [BuildingBlocks.Jwt](https://docs.diyanet.pro/building-blocks/jwt.md): Çok-şemalı custom JWT — Backoffice (Bearer) + OTPChallenge token'ları. - [BuildingBlocks.Keycloak](https://docs.diyanet.pro/building-blocks/keycloak.md): Çift-realm Keycloak SSO — iki JwtBearer şeması, claims transformation, ICurrentUserService. - [BuildingBlocks.Logging.Serilog](https://docs.diyanet.pro/building-blocks/logging.md): Serilog kurulumu — Seq sink, request logging enrichment ve gürültü filtreleme. - [Monitoring & Observability](https://docs.diyanet.pro/building-blocks/monitoring.md): İki paket — Prometheus HTTP metrikleri ve OpenTelemetry tabanlı tam observability (metrics/tracing + health gauge). - [BuildingBlocks.OAuth](https://docs.diyanet.pro/building-blocks/oauth.md): OAuth2 + PKCE soyutlaması — Google, Meta ve Keycloak için provider-agnostik authorize/exchange/userinfo akışı. - [BuildingBlocks.Otp](https://docs.diyanet.pro/building-blocks/otp.md): Numerik OTP üretimi, HMAC-SHA256 stateless doğrulama, throttling ve SMS şablonu. - [BuildingBlocks — Genel Bakış](https://docs.diyanet.pro/building-blocks/overview.md): 20 yeniden kullanılabilir altyapı paketinin amaç, gruplama ve kayıt haritası. - [BuildingBlocks.Specification](https://docs.diyanet.pro/building-blocks/specification.md): Ardalis.Specification üzerine query kapsülleme, in-memory kombinatörler, filtre ve cache entegrasyonu. - [BuildingBlocks.Time](https://docs.diyanet.pro/building-blocks/time.md): Saat soyutlaması — IClock, SystemClock, FakeClock ve AsyncLocal scoped override ile deterministik test. - [Hybrid Cache](https://docs.diyanet.pro/caching/hybrid-cache.md): IHybridRequestCache API, kayıt sırası, stampede koruması ve spec tabanlı CachedRepository cache - [Cache Invalidation](https://docs.diyanet.pro/caching/invalidation.md): Tag-bazlı invalidation, CacheTags sabitleri ve domain event handler örnekleri - [Multi-Instance Senkron](https://docs.diyanet.pro/caching/multi-instance.md): EventBusRemoteTagBroadcaster, CacheInvalidationIntegrationEvent ve echo guard ile L1 senkronizasyonu - [Cache Mimarisi](https://docs.diyanet.pro/caching/overview.md): HybridCache (L1 memory + L2 Redis), spec tabanlı opt-in cache, tag invalidation ve multi-instance broadcast - [Audit Interceptor](https://docs.diyanet.pro/data/audit-interceptor.md): AuditInterceptor — CreatedAt/By, UpdatedAt/By ve soft-delete'in otomatik yazımı - [DbContext & Repository](https://docs.diyanet.pro/data/dbcontext.md): DiyanetCleanArchitectureDbContext, OnModelCreating, value object map'leme, EFRepository / CachedRepository, UnitOfWork - [Migrations](https://docs.diyanet.pro/data/migrations.md): EF Core migration üretme/uygulama, DesignTime factory, MigrationService AutoDeploy - [Data Katmanı — Genel Bakış](https://docs.diyanet.pro/data/overview.md): EF Core (PostgreSQL 16 + Npgsql + snake_case), DbContext, migration, audit, soft-delete ve seed - [Seed Data](https://docs.diyanet.pro/data/seed-data.md): DevDataSeeder, DistrictSeeder, Fluent HasData ve prod davranışı - [Soft Delete](https://docs.diyanet.pro/data/soft-delete.md): ISoftDeletable, global query filter, restore ve partial unique index - [Aggregate'ler](https://docs.diyanet.pro/domain/aggregates.md): Aggregate kavramı, User aggregate'inin derinlemesine incelemesi ve tüm aggregate'lerin özeti. - [Domain Event'ler](https://docs.diyanet.pro/domain/domain-events.md): Domain event nedir, aggregate içinde nasıl yayılır, MediatR ile nasıl dispatch edilir ve integration event'ten farkı. - [Factory ve Domain Service'ler](https://docs.diyanet.pro/domain/factories-services.md): Karmaşık oluşturma için factory, tek aggregate'e sığmayan iş kuralları için domain service. IUserFactory ve UserRegistrationService örnekleri. - [Domain Katmanı](https://docs.diyanet.pro/domain/overview.md): DDD yapı taşları, klasör yapısı ve aggregate listesi ile Domain katmanının rolü. - [SharedKernel](https://docs.diyanet.pro/domain/shared-kernel.md): DDD yapı taşları: EntityBase, ValueObject, Enumeration, DomainEvent, guard altyapısı ve repository arayüzleri. - [Value Object'ler](https://docs.diyanet.pro/domain/value-objects.md): Değişmezlik, constructor validasyonu ve hazır value object / enumeration kataloğu. - [Domain Events](https://docs.diyanet.pro/events/domain-events.md): DomainEvent base, aggregate'ta AddDomainEvent, MediatorExtension dispatch ve INotificationHandler konvansiyonu - [Integration Events](https://docs.diyanet.pro/events/integration-events.md): IntegrationEvent base, IBusEvent, IIntegrationEventHandler, AddMassTransitSubscription ve idempotent consumer - [Outbox Pattern](https://docs.diyanet.pro/events/outbox-pattern.md): Dual-write problemi ve MassTransit EF Core transactional outbox/inbox kurulumu - [Event-Driven Akış](https://docs.diyanet.pro/events/overview.md): Domain event vs integration event; Command Handler → SaveEntities → MediatR / Outbox → RabbitMQ tam akışı - [RabbitMQ Topology](https://docs.diyanet.pro/events/rabbitmq-topology.md): Topic exchange, routing key, shared queue, iki katmanlı retry/redelivery ve DLX - [Ön Gereksinimler](https://docs.diyanet.pro/getting-started/prerequisites.md): Geliştirme ortamını kurmadan önce makinenizde olması gereken araçlar ve IDE seçenekleri - [Proje Yapısı](https://docs.diyanet.pro/getting-started/project-structure.md): Monorepo dizin yapısı: katmanlar, BuildingBlocks, SPA'lar ve devops dosyaları - [Hızlı Başlangıç](https://docs.diyanet.pro/getting-started/quickstart.md): Local geliştirme ortamını Docker ile tek komutta ayağa kaldırma - [Şablonu Kullanmak (dotnet new)](https://docs.diyanet.pro/getting-started/template-usage.md): Bu repoyu bir .NET template'i olarak kurup kendi proje adınızla yeni bir çözüm üretme - [Giriş](https://docs.diyanet.pro/introduction.md): Diyanet Clean Architecture şablonuna genel bakış ve doküman haritası - [Client Yapılandırması](https://docs.diyanet.pro/keycloak/client-configuration.md): Public PKCE client ayarları ve dev için adım adım manuel kurulum rehberi - [Ortamlar — Dev / Stage / Prod](https://docs.diyanet.pro/keycloak/environments.md): Ortam başına Keycloak, realm isimlendirme, BaseUrl vs PublicBaseUrl ve .env değişkenleri - [Keycloak Genel Bakış](https://docs.diyanet.pro/keycloak/overview.md): Keycloak'ın rolü, çift-realm mantığı, client'lar, token ömürleri ve provisioning stratejisi - [Otomatik Provisioning](https://docs.diyanet.pro/keycloak/provisioning.md): KeycloakProvisioning config'i, hosted service, seed model'ler ve idempotent davranış - [Realm Yapısı](https://docs.diyanet.pro/keycloak/realm-structure.md): İki realm, roller, identity provider, protocol mapper'lar ve token içeriği - [Sorun Giderme](https://docs.diyanet.pro/keycloak/troubleshooting.md): Realm metadata UNREACHABLE, issuer mismatch, invalid audience, PKCE/redirect, token süresi ve provisioning logları - [Sık Kullanılan Komutlar](https://docs.diyanet.pro/operations/commands.md): Docker, dotnet ef, template, npm ve script referansı - [Docker — Dev Ortamı](https://docs.diyanet.pro/operations/docker-dev.md): Local geliştirme stack'i, override.yml servisleri, otomatik migration/seed - [Docker — Prod Ortamı](https://docs.diyanet.pro/operations/docker-prod.md): On-prem dağıtım, müşteri altyapısı, sertifika ve Hetzner çok-proje - [Docker — Stage Ortamı](https://docs.diyanet.pro/operations/docker-stage.md): nginx-proxy + acme-companion, path-based routing, dış altyapı - [Ortam Değişkenleri](https://docs.diyanet.pro/operations/env-variables.md): .env örnek dosyaları, kategori tabloları ve appsettings ilişkisi - [Gözlemlenebilirlik](https://docs.diyanet.pro/operations/observability.md): Serilog → Seq, OpenTelemetry, Prometheus /metrics, Grafana, health checks, Hangfire - [Operasyon Genel Bakış](https://docs.diyanet.pro/operations/overview.md): Ortam matrisi, compose dosyaları ve routing tablosu - [Cache Invalidation](https://docs.diyanet.pro/playbooks/cache-invalidation.md): Bir kaydı güncelleyince cache nasıl düşer: domain event → RemoveByTagAsync → çoklu-instance broadcast. Yeni cache'lenebilir query nasıl eklenir. - [Vatandaş Kaydı](https://docs.diyanet.pro/playbooks/citizen-registration.md): SignUpUserCommand → OTP SMS → VerifyOtp ile aktivasyon. Domain service, factory, domain event ve SMS gönderiminin uçtan uca akışı. - [Yeni Domain Event Ekleme](https://docs.diyanet.pro/playbooks/new-domain-event.md): Sıfırdan domain event reçetesi: event sınıfı → AddDomainEvent → handler → (opsiyonel) integration event yayını + abonelik + test. - [OTP / TOTP Akışı](https://docs.diyanet.pro/playbooks/otp-flow.md): SignIn → challenge token → VerifyOtp / VerifyTotp → access + refresh token + oturum. ResendOtp cooldown ve limitleri. - [Playbook'lar](https://docs.diyanet.pro/playbooks/overview.md): Uçtan uca senaryolar — bir isteğin Controller'dan Domain'e, event'lere ve cache'e kadar tüm yolculuğu. - [Personel Girişi](https://docs.diyanet.pro/playbooks/staff-login.md): Admin SPA → Keycloak (OIDC + PKCE) → JwtBearer doğrulama → davet bazlı provisioning → permission policy → GetAdminMeQuery. - [Sık Sorulan Sorular](https://docs.diyanet.pro/reference/faq.md): Geliştirme ve operasyon sırasında en sık karşılaşılan sorular ve gerçek koda dayalı kısa cevaplar. - [Sözlük](https://docs.diyanet.pro/reference/glossary.md): Şablonda geçen DDD, CQRS, event-driven, identity ve operasyon terimlerinin Türkçe açıklamaları. - [Authentication](https://docs.diyanet.pro/security/authentication.md): Token edinimi (OIDC + PKCE), API JWT doğrulama, token kaynak önceliği, refresh rotation ve token version - [Authorization](https://docs.diyanet.pro/security/authorization.md): Dinamik permission policy, permission/scope/active-account handler'ları, roller ve RolePermission seed - [Multi-Tenancy](https://docs.diyanet.pro/security/multi-tenancy.md): organization_id / tenant_id JWT claim, soft-tenant yaklaşımı, ICurrentTenant ve pipeline izolasyonu - [Kimlik ve Yetki — Genel Bakış](https://docs.diyanet.pro/security/overview.md): Çift-realm Keycloak, iki JwtBearer şeması, claim modeli ve katmanlı authorization - [Authenticator Servisi (TOTP)](https://docs.diyanet.pro/services/authenticator.md): OtpNet ile RFC 6238 TOTP — secret üretimi, otpauth:// QR URI ve drift toleranslı doğrulama. - [Email Servisi](https://docs.diyanet.pro/services/email.md): Brevo SMTP üzerinden Scriban şablonlu e-posta gönderimi; ResilientEmailGateway ile MailKit + Polly retry/circuit-breaker koruması. - [Hangfire Servisi](https://docs.diyanet.pro/services/hangfire.md): PostgreSQL destekli arka plan iş kuyruğu — MediatR command/event köprüsü, BasicAuth dashboard ve health check. - [Notification Servisi (SSE)](https://docs.diyanet.pro/services/notification.md): Server-Sent Events tabanlı admin bildirimleri — in-memory broadcaster, rol-hedefli yayın ve HMAC stream-token. - [OAuth Servisi](https://docs.diyanet.pro/services/oauth.md): Google, Meta ve Keycloak OAuth2 entegrasyonu — BuildingBlocks.OAuth soyutlaması, PKCE (S256) ve backend-driven akış. - [Altyapı Servisleri — Genel Bakış](https://docs.diyanet.pro/services/overview.md): Email, SMS, Notification, OAuth, Authenticator ve Hangfire altyapı servislerinin ortak kayıt deseni, config konvansiyonu ve resilience yaklaşımı. - [SMS Servisi](https://docs.diyanet.pro/services/sms.md): NetGSM REST v2 OTP entegrasyonu — Basic Auth, ASCII-only mesaj, ortam bazlı telefon çözümleme ve Polly retry.