Skip to main content
Çözüm dosyası DiyanetCleanArchitecture.slnx — yeni nesil XML tabanlı .slnx formatıdır (Visual Studio 2022 17.10+ ve VS 2026 destekler). Projeler türlerine göre gruplanır.

Proje türleri

TürUzantıProjeler
Web SDK.csproj (Web)DiyanetCleanArchitecture.API
Class Library.csprojApplication, Domain, SharedKernel, Infrastructure.*, BuildingBlocks.*
JS/TS SPA.esprojPresentation.Admin, Presentation.Website
Docker Compose.dcprojdocker-compose.dcproj (VS container desteği)
global.json, Directory.Build.props ve Directory.Packages.props yoktur. NuGet paket sürümleri her .csproj içinde ayrı tanımlanır; merkezi paket yönetimi kullanılmaz.

Katman projeleri

src/
├── DiyanetCleanArchitecture.API                    # ASP.NET Core 10 host
├── DiyanetCleanArchitecture.Application            # CQRS + MediatR + behaviors
├── DiyanetCleanArchitecture.Domain                 # Aggregate'ler + domain event'ler
├── DiyanetCleanArchitecture.Domain.SharedKernel    # EntityBase, ValueObject, Enumeration
├── DiyanetCleanArchitecture.Infrastructure.EFCore  # DbContext, migrations, interceptor
├── DiyanetCleanArchitecture.Infrastructure.Jobs.Hangfire
├── DiyanetCleanArchitecture.Infrastructure.Services.Email
├── DiyanetCleanArchitecture.Infrastructure.Services.Sms
├── DiyanetCleanArchitecture.Infrastructure.Services.Notification
├── DiyanetCleanArchitecture.Infrastructure.Services.OAuth
├── DiyanetCleanArchitecture.Infrastructure.Services.Authenticator
├── DiyanetCleanArchitecture.Presentation.Website   # React 19 + Vite (.esproj)
├── DiyanetCleanArchitecture.Presentation.Admin     # React 19 + Vite (.esproj)
└── BuildingBlocks/                                  # 20 paket

BuildingBlocks paketleri (20)

PaketAmaç
BuildingBlocks.CachingHybridCache (L1+L2) soyutlaması, tag invalidation
BuildingBlocks.Caching.RedisRedis distributed cache + distributed lock
BuildingBlocks.Contracts.EventsIntegrationEvent, handler kontratları
BuildingBlocks.DeviceDetectorIP çözümleme, cihaz tespiti, güven skoru
BuildingBlocks.EventBusEvent bus soyutlaması + subscription registry
BuildingBlocks.EventBus.EventBusRabbitMQEski RabbitMQ bus (MassTransit ile değiştirildi)
BuildingBlocks.EventBus.MassTransit.RabbitMqAktif MassTransit + RabbitMQ event bus
BuildingBlocks.FileServerAuth-duyarlı statik dosya sunumu
BuildingBlocks.Hangfire.MediatR.ExtensionsHangfire ↔ MediatR köprüsü
BuildingBlocks.HealthChecksK8s uyumlu live/ready/external endpoint’leri
BuildingBlocks.JwtÇok-şemalı JWT (Backoffice + OTP Challenge)
BuildingBlocks.KeycloakÇift-realm Keycloak SSO + claims transformation
BuildingBlocks.Logging.SerilogSerilog + Seq + request enrichment
BuildingBlocks.Monitoring.PrometheusOpenTelemetry Prometheus exporter
BuildingBlocks.OAuthOAuth2 / PKCE soyutlaması
BuildingBlocks.ObservabilityOpenTelemetry metrik/trace + health→gauge
BuildingBlocks.OtpHMAC-SHA256 OTP üretim/doğrulama
BuildingBlocks.Security.BotProtectionGoogle reCAPTCHA doğrulaması
BuildingBlocks.SpecificationGeneric Specification (Ardalis tabanlı)
BuildingBlocks.TimeIClock soyutlaması (test edilebilir saat)

Test projeleri

test/
├── DiyanetCleanArchitecture.Domain.UnitTests
├── DiyanetCleanArchitecture.API.Authorization.UnitTests
├── DiyanetCleanArchitecture.Caching.Redis.UnitTests
├── DiyanetCleanArchitecture.Infrastructure.Services.Email.UnitTests
├── DiyanetCleanArchitecture.Infrastructure.Services.Sms.UnitTests
└── BuildingBlocks.EventBus.MassTransit.RabbitMq.FunctionalTests

Adlandırma kuralları (naming convention)

  • Katman: DiyanetCleanArchitecture.<Layer> (Domain, Application, …).
  • Altyapı servisleri: DiyanetCleanArchitecture.Infrastructure.Services.<X> (Email, Sms, OAuth, …).
  • BuildingBlocks: BuildingBlocks.<Concern> ve <Concern>.<Provider> (örn. Caching.Redis, EventBus.MassTransit.RabbitMq).
  • DI uzantıları: Her proje bir DependencyInjection.cs veya Add<X> extension metodu açar; Program.cs bu metodları çağırır.

NuGet paket kategorileri

KategoriÖrnek paketler
CQRS / ValidationMediatR 14.1.0, FluentValidation 12.1.1, AutoMapper 16.1.1
VeriEF Core 10.0.7, Npgsql.EFCore 10.0.1, EFCore.NamingConventions 10.0.1, Ardalis.Specification 9.3.1
MesajlaşmaMassTransit.RabbitMQ 8.5.9, MassTransit.EntityFrameworkCore 8.5.9
CacheStackExchange.Redis 2.12.14, Microsoft.Extensions.Caching.Hybrid 9.6.0
JobsHangfire.AspNetCore 1.8.23, Hangfire.PostgreSql 1.21.1
Log / MetrikSerilog.AspNetCore 10.0.0, OpenTelemetry.* 1.15.x
API DocsNSwag.AspNetCore 14.7.1, Scalar.AspNetCore 2.14.6
ServislerMailKit 4.16.0, Scriban 7.1.0, OtpNet, Polly 8.6.6

Sırada ne var?

Bağımlılık Akışı

Projeler arası referans grafiği ve izin verilen yönler.

Tasarım Kararları

Neden Outbox, çift-realm, HybridCache?