Onion Architecture yaklaşımı ile kurgulanmış bir Kurs Satış Platformu.
Projeyi çalıştırmak için aşağıdaki adımları takip edebilirsiniz:
- Visual Studio'yu açın.
- "Clone a repository" seçeneği üzerinden projeyi klonlayın.
- Backend klasörüne gidin ve
CourseMarket.API.sln
dosyasını çift tıklayarak açın. - NuGet Package Manager Console'u açın:
- Menüden Tools (Araçlar) > NuGet Package Manager > Package Manager Console yolunu izleyin.
- Default project olarak
CourseMarket.Infrastructure
seçin ve ardındanUpdate-Database
komutunu çalıştırarak veritabanını oluşturun. - Visual Studio üzerinde backendi ayağa kaldırın (https run)
- Seed Data:
- pgAdmin'i açın ve
CourseMarketAPIDb
veritabanına sağ tıklayarak Query Tool'u seçin. - Query Tool penceresinde dosya simgesine tıklayın, seed-data klasörü altındaki
seed.sql
dosyasını seçin ve çalıştırın. Veriler veritabanına yüklenecektir. - Eğitmen giriş bilgileri = username : instructor1 password: aslan1905
- Kullanıcı giriş bilgileri = username : user1 password: pwd2001pwd ve username: user2 password: pwd2002pwd
- pgAdmin'i açın ve
- (Opsiyonel) Seq ile Log Analizi:
- Seq'i kullanmak için aşağıdaki komutu Docker üzerinde çalıştırın:
docker run --name Seq -e ACCEPT_EULA=Y -p 5341:80 datalust/seq:latest
- Seq arayüzüne
http://localhost:5341
adresinden erişebilirsiniz. Backend çalışmaya başladıktan sonra veya Frontend'de bazı işlemleri gerçekleştirdikten sonra logları analiz edebilirsiniz.
- Seq'i kullanmak için aşağıdaki komutu Docker üzerinde çalıştırın:
-
Exception Handling:
- Beklenmeyen veya kritik hatalar için
ConfigureExceptionHandlerExtension
kullanılmıştır. - İş kuralları hataları ve tahmin edilebilir durumlar için
ServiceResult.Error
mekanizması kullanılmıştır.
- Beklenmeyen veya kritik hatalar için
-
Logging:
- Loglar,
Serilog
ile hem lokal text dosyasına hem de veritabanına kaydedilmektedir. - Logların görselleştirilmesi ve analizi için
Seq
aracı entegre edilmiştir.
- Loglar,
-
File Management:
- Dosyalar, veritabanında Table Per Hierarchy (TPH) yapısı ile URL olarak saklanmaktadır.
- Gelecekte AWS veya diğer bulut tabanlı depolama sistemlerine geçiş için mimaride soyutlama yapılmıştır.
-
Validation:
- Backend'de
FluentValidation
ile validasyon sağlanmıştır. - Frontend tarafında
Pure JavaScript
veRegex
kullanılarak input doğrulama yapılmıştır.
- Backend'de
-
Authentication:
- Kullanıcı yetkilendirme
JWT Token
ile sağlanmıştır. Refresh Token
kullanıcı tablosuna eklenmiştir.- Frontend'de
Axios Interceptor
ile token yenileme veAuthorization
header'ı ekleme işlemleri gerçekleştirilmiştir.
- Kullanıcı yetkilendirme
API dökümantasyonu bir Postman Collection olarak sağlanmıştır. Aşağıdaki adımları takip ederek API'yi kolayca test edebilirsiniz:
- Postman'i açın.
- Sol üst köşeden Import butonuna tıklayın.
- Repository'deki collection dosyasını sürükleyip bırakın.
Homepage | Kurs Detayı (Sahip Değil) | Kurs Detayı (Sahip) |
---|---|---|
Profil | Sipariş Geçmişi |
---|---|
Login (Alertify ile) | Register |
---|---|
Kurs Oluşturma | Sepet ve Ödeme |
---|---|
Dosya Yönetimi | Seq Log Ekranı |
---|---|
Veritabanı İlişkileri |
---|
|