PoliPersJournal backend, cok dilli icerik yonetimi icin gelistirilmis bir ASP.NET Core Web API projesidir. Cozum yapisi DDD ve Clean Architecture katmanlarina ayrilir.
Bu repo artik:
.NET 10uzerinde calisirPostgreSQLkullanir- EF Core migration'larini startup sirasinda otomatik uygular
.envdosyasindan environment variable yukleyebilir- kalici mount edilen dizini
wwwrootolarak kullanabilir - kok dizindeki
Dockerfileile Coolify uzerinden publish edilebilir
- .NET 10
- ASP.NET Core Web API
- Entity Framework Core 10
- PostgreSQL
- ASP.NET Core Identity
- JWT Authentication
- Swagger / Swashbuckle
| Katman | Aciklama |
|---|---|
API |
Controller'lar, middleware'ler, uygulama giris noktasi |
Application |
DTO'lar, servisler ve uygulama is kurallari |
Domain |
Entity'ler, enum'lar ve arayuzler |
Infrastructure |
EF Core, repository'ler, guvenlik ve dis bagimliliklar |
Shared |
Ortak response ve exception yapilari |
Detayli notlar icin PoliPersJournal-Backend-Yapisi.md dosyasina bakabilirsiniz.
.NET SDK 10PostgreSQL 16+tavsiye edilir- Lokal veri tasima icin Windows uzerinde erisilebilir
SQL Server
Varsayilan ayarlar API/appsettings.json icine eklendi.
Onemli ayarlar:
ConnectionStrings__DefaultConnectionMSSQL_SOURCE_CONNECTION_STRINGMSSQL_SOURCE_SCHEMAAPP_WWWROOT_PATHJwtSettings__SecretJwtSettings__IssuerJwtSettings__AudienceJwtSettings__TokenExpirationInMinutes
Repo kokunde .env kullanabilirsiniz. Ornek anahtarlar .env.example dosyasindadir.
Varsayilan PostgreSQL connection string formati:
Host=localhost;Port=5432;Database=polipersjournal;Username=postgres;Password=postgres
- Bagimliliklari yukleyin:
dotnet restore- Gerekirse veritabanini migration ile olusturun:
dotnet ef database update --project Infrastructure/Infrastructure.csproj --startup-project API/API.csproj- Uygulamayi calistirin:
dotnet run --project API/API.csprojVarsayilan development profili ile Swagger su adreste acilir:
https://localhost:1923/swagger
Not:
- Uygulama acilisinda
Database.Migrate()calistigi icin bekleyen migration'lar otomatik uygulanir. - Production ortaminda dogru PostgreSQL baglanti bilgisini environment variable olarak vermeniz gerekir.
- Static file root varsayilan olarak Linux'ta
/data/polipersjournal, Windows'tadata/polipersjournalaltina yonlenir.
MSSQL bagimliligi kaldirildi ve EF provider olarak Npgsql.EntityFrameworkCore.PostgreSQL kullaniliyor.
Yapilan degisiklikler:
- tum projeler
net10.0hedef framework'una tasindi UseSqlServeryerineUseNpgsqlkullanildi- SQL Server migration seti silindi
- PostgreSQL icin yeni baslangic migration'i olusturuldu
AspNetUsers.TCkolonu gercek veri boyutuna gore genisletildi- SQL Server'daki mevcut veriyi PostgreSQL'e tasimak icin migrator araci eklendi
Yeni migration dosyalari Infrastructure/Migrations altindadir.
Repo icinde iki yardimci bileşen bulunur:
Veri tasimak icin:
powershell -ExecutionPolicy Bypass -File scripts/Sync-MssqlToPostgres.ps1Bu script:
- hedef PostgreSQL'e migration uygular
- local MSSQL
PoliPersJournalverisini PostgreSQL'e tasir - repo kokundeki
.envayarlarini kullanir
Kok dizinde Coolify uyumlu bir Dockerfile bulunuyor.
Container davranisi:
- multi-stage build kullanir
API/API.csprojpublish edilir- uygulama
8080portundan ayaga kalkar ASPNETCORE_URLS=http://+:8080ile calisirAPP_WWWROOT_PATH=/data/polipersjournalile kalici static file root kullanir/data/polipersjournalvolume olarak mount edilmeye uygundur
Ornek docker build ve docker run:
docker build -t polipersjournal-backend .
docker run --rm -p 8080:8080 ^
-e ASPNETCORE_ENVIRONMENT=Production ^
-e ConnectionStrings__DefaultConnection="Host=host.docker.internal;Port=5432;Database=polipersjournal;Username=postgres;Password=postgres" ^
-e APP_WWWROOT_PATH="/data/polipersjournal" ^
-e JwtSettings__Secret="change-this-secret-to-a-long-random-value" ^
-e JwtSettings__Issuer="PoliPersJournal" ^
-e JwtSettings__Audience="PoliPersJournal.Client" ^
-v polipersjournal_data:/data/polipersjournal ^
polipersjournal-backendCoolify icin:
- build type olarak
Dockerfilesecin - repository root'u build context olarak kullanin
- container port olarak
8080tanimlayin - persistent storage icin
Directory Mounttanimlayip container path olarak/data/polipersjournalverin - PostgreSQL servisini ayri ekleyip
ConnectionStrings__DefaultConnectionenv variable'ini verin - JWT ayarlarini env variable olarak tanimlayin
JWT tabanli kimlik dogrulama yapisi aktif. Swagger uzerinden login olup token alip yetkili endpoint'leri test edebilirsiniz.
Bu proje GNU GPL v3.0 lisansi ile dagitilir.