DPÜ Menzil, Kütahya Dumlupınar Üniversitesi öğrencileri ve personeli için geliştirilmiş; kampüs içi duyuru, geri bildirim ve anlık iletişim odaklı tam donanımlı (Full-Stack) bir platformdur. Proje, modern yazılım mimarileri ve siber güvenlik standartları (OWASP prensipleri) göz önünde bulundurularak inşa edilmektedir.
Proje, frontend ve backend mimarilerinin tek bir repoda düzenli bir şekilde yönetilmesi amacıyla şu klasör yapısında kurgulanmıştır:
backend/: .NET 10 tabanlı Clean Architecture yapısı kullanan Web API projesi.frontend/: React 19, Vite ve TailwindCSS kullanan modern siber punk temalı kullanıcı arayüzü.
Backend tarafı sürdürülebilir ve test edilebilir olması için 4 ana katmandan oluşur:
- API: İsteklerin karşılandığı, CORS politikalarının ve JWT yetkilendirmelerinin yönetildiği giriş noktası.
- Application: İş mantığı, DTO yönetimi ve servislerin (Auth, Gonderi) bulunduğu beyin katmanı.
- Core (Domain): Varlıklar (Entities) ve arayüzlerin (Interfaces) bulunduğu bağımsız merkez katman.
- Infrastructure: Veritabanı yapılandırması (EF Core), Repository implementasyonları ve JWT/Şifreleme servislerinin katmanı.
- CORS Güvenliği: Backend ve frontend arasındaki veri trafiği,
Program.csüzerinde tanımlı özel CORS politikalarıyla güvenli bir şekilde yönetilir. - Parola Güvenliği: Kullanıcı şifreleri veritabanına asla düz metin olarak kaydedilmez. BCrypt (Salted Hash) algoritması ile korunur.
- Veri İzolasyonu (Anti-IDOR): Tahmin edilebilir ID saldırılarını önlemek amacıyla tüm tablolarda birincil anahtar olarak UUID (Guid) kullanılmaktadır.
- DTO Kullanımı: Veritabanı modelleri asla doğrudan dışarıya açılmaz; veri transferleri DTO üzerinden güvenli bir şekilde yapılır.
- Güvenli JWT Akışı: Giriş yapan kullanıcının token bilgisi frontend tarafında güvenli bir şekilde çözülerek (JWT Decode) rol bazlı (
Öğrenci,Admin,İdari Personel) sayfa koruması sağlanır.
Projeyi yerel ortamınızda çalıştırmak için aşağıdaki adımları sırasıyla uygulayın:
- Bilgisayarınızda Docker Desktop, Node.js ve .NET 10 SDK kurulu olduğundan emin olun.
Terminal üzerinden backend klasörüne gidin ve PostgreSQL konteynerini arka planda ayağa kaldırın:
cd backend
docker compose up -dAynı dizinde (backend) bekleyen veritabanı güncellemelerini uygulayın:
dotnet ef database update --project src\DPUMenzil.APIAPI sunucusunu başlatmak için DPUMenzil.API klasörünün içinden projeyi çalıştırın:
cd src\DPUMenzil.API
dotnet run- API URL: Sunucu varsayılan olarak http://localhost:5127 portunu dinler.
- Scalar API Reference: API uçlarını test etmek için tarayıcıdan http://localhost:5127/scalar/v1 adresine gidebilirsiniz.
Yeni bir terminal sekmesi açın ve frontend klasörüne giderek bağımlılıkları yükleyip projeyi başlatın:
cd frontend/dpu-menzil
npm install
npm run dev- Arayüz URL: Tarayıcınızdan http://localhost:5173 adresine giderek platformu kullanmaya başlayabilirsiniz.
- Not: Giriş yapabilmek için .env dosyanızdaki VITE_API_URL değerinin http://localhost:5127/api olarak ayarlandığından emin olun.
Çalışmanızı bitirdiğinizde sistem kaynaklarını serbest bırakmak için:
- Hem backend hem de frontend terminallerinde Ctrl + C tuşlarına basarak yayınları durdurun.
- backend klasöründe şu komutu çalıştırarak Docker konteynerini kapatın:
docker compose downFeyza Nur Dandal - Kütahya Dumlupınar Üniversitesi, Yazılım Mühendisliği