Çö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ür Uzantı Projeler Web SDK .csproj (Web)DiyanetCleanArchitecture.APIClass Library .csprojApplication, Domain, SharedKernel, Infrastructure.*, BuildingBlocks.* JS/TS SPA .esprojPresentation.Admin, Presentation.WebsiteDocker 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)
Paket Amaç 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 busBuildingBlocks.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 / Validation MediatR 14.1.0, FluentValidation 12.1.1, AutoMapper 16.1.1 Veri EF Core 10.0.7, Npgsql.EFCore 10.0.1, EFCore.NamingConventions 10.0.1, Ardalis.Specification 9.3.1 Mesajlaşma MassTransit.RabbitMQ 8.5.9, MassTransit.EntityFrameworkCore 8.5.9 Cache StackExchange.Redis 2.12.14, Microsoft.Extensions.Caching.Hybrid 9.6.0 Jobs Hangfire.AspNetCore 1.8.23, Hangfire.PostgreSql 1.21.1 Log / Metrik Serilog.AspNetCore 10.0.0, OpenTelemetry.* 1.15.x API Docs NSwag.AspNetCore 14.7.1, Scalar.AspNetCore 2.14.6 Servisler MailKit 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?