> ## Documentation Index
> Fetch the complete documentation index at: https://docs.diyanet.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# Giriş

> Diyanet Clean Architecture şablonuna genel bakış ve doküman haritası

## 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

```mermaid theme={null}
flowchart LR
    subgraph Browser
        W[Website SPA<br/>React + Vite]
        A[Admin SPA<br/>React + Vite]
    end

    subgraph Keycloak
        RV[diyanet-vatandas-env realm]
        RP[diyanet-yonetim-env realm]
    end

    subgraph API[".NET 10 API"]
        AUTH[Çift JWT Bearer<br/>Vatandas + Personel]
        APP[Application<br/>MediatR + Handlers]
        DOM[Domain<br/>Aggregates + Events]
        EF[EF Core<br/>Audit Interceptor]
    end

    subgraph Infra
        PG[(PostgreSQL)]
        RD[(Redis L2)]
        MQ{{RabbitMQ}}
        SEQ[Seq Logs]
    end

    W -->|OIDC| RV
    A -->|OIDC| RP
    W -->|JWT| AUTH
    A -->|JWT| AUTH
    AUTH --> APP
    APP --> DOM
    DOM --> EF
    EF --> PG
    APP <-->|L1+L2| RD
    APP -->|Outbox| MQ
    MQ -->|Consumer| APP
    API --> SEQ
```

## Doküman haritası

<CardGroup cols={2}>
  <Card title="Ön Gereksinimler" icon="screwdriver-wrench" href="/getting-started/prerequisites">
    .NET 10, Node 22, Docker, IDE seçenekleri (VS 2026, VS Code, Cursor, Antigravity).
  </Card>

  <Card title="Hızlı Başlangıç" icon="rocket" href="/getting-started/quickstart">
    `docker compose up -d --build` ile local'i ayağa kaldır.
  </Card>

  <Card title="Mimari" icon="layer-group" href="/architecture/overview">
    Katmanlar, bağımlılık akışı, tasarım kararları.
  </Card>

  <Card title="Domain (DDD)" icon="cube" href="/domain/overview">
    Aggregate'ler, Value Object'ler, Domain Event'ler, Factory'ler.
  </Card>

  <Card title="Application (CQRS)" icon="diagram-project" href="/application/overview">
    Command/Query + Handler, Pipeline Behavior, validasyon, mapping.
  </Card>

  <Card title="Veri Katmanı (EF Core)" icon="database" href="/data/overview">
    DbContext, audit interceptor, soft-delete, migration, seed.
  </Card>

  <Card title="BuildingBlocks" icon="cubes" href="/building-blocks/overview">
    20 paylaşılan modül — Keycloak, Cache, EventBus, JWT, OTP...
  </Card>

  <Card title="Event-Driven Akış" icon="bolt" href="/events/overview">
    Domain → Outbox → RabbitMQ → Integration event handler.
  </Card>

  <Card title="Operasyon" icon="server" href="/operations/overview">
    Docker dev / stage / prod, nginx-proxy, gözlemlenebilirlik.
  </Card>
</CardGroup>

## 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)                 |

## 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.
