Skip to content

capanoglu-hus/f1api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏎️ F1 Taraftar (F1 Fan & Prediction API)

Bu repo, ASP.NET Core ile geliştirilmiş, JWT tabanlı kimlik doğrulama, oylama & tahmin sistemi ve blockchain ile NFT ödül entegrasyonu içeren kapsamlı bir backend API projesidir.

Proje, Formula 1 sezonu boyunca kullanıcıların:

  • favori sürücülerini oylayabildiği,
  • yarışlar için tahminde bulunabildiği,
  • doğru tahmin yapanlara NFT ödülleri verdiği

gerçek dünya seviyesinde bir sistem olarak tasarlanmıştır.

🚀 Özellikler

🔐 Kimlik Doğrulama ve Güvenlik

  • JWT (JSON Web Token): Güvenli giriş ve kayıt işlemleri.
  • Refresh Token Mekanizması: Kullanıcı oturumu süresi dolduğunda, tekrar giriş yapmaya gerek kalmadan sessizce yeni token alma özelliği.
  • Rol Bazlı Yetkilendirme (RBAC): Yarışları sonuçlandırma ve ödül dağıtma gibi işlemler sadece Admin yetkisine sahip kullanıcılar tarafından yapılabilir.

🏁 Yarış ve Tahmin Sistemi

  • Yarış Yönetimi: Adminler yarış takvimini yönetebilir.
  • Podyum Tahmini: Kullanıcılar belirli bir yarış için 1., 2. ve 3. sıradaki pilotları tahmin edebilir.
  • Akıllı Validasyon (FluentValidation):
    • Bir kullanıcının aynı tahmin içinde aynı pilotu birden fazla kez seçmesini engelleyen özel mantık.
    • Yarış başladıktan sonra tahmin yapılmasını engelleyen zaman kısıtlaması kontrolleri.

🏆 Ödül Sistemi ve İş Mantığı

  • Otomatik Puanlama: Admin yarışı sonlandırdığında sistem gerçek sonuçlarla tahminleri karşılaştırır.
  • Kazanan Ayrıştırma: Sadece ilk 3'ü tam sırasıyla bilen kullanıcılar veritabanı seviyesinde optimize edilmiş LINQ sorguları ile çekilir.
  • NFT Ödül Kuyruğu: Kazananlar belirlenir ve ödül tablosuna "Beklemede (Pending)" olarak eklenir.
  • Asenkron İşleme (Background Processing): Blokzincir (Blockchain) gibi yavaş işlemlerde API'nin kilitlenmemesi için Task.Run ve Background Service mantığı kullanılarak ödül dağıtımı arka planda (Fire-and-Forget) yapılır.

🛠️ Teknoloji Yığını

  • Framework: .NET 8 (ASP.NET Core Web API)
  • Veritabanı: MS SQL Server
  • ORM: Entity Framework Core (Code First)
  • Validasyon: FluentValidation
  • Kimlik Doğrulama: Microsoft.Identity / JWT Bearer
  • Dokümantasyon: Scalar / Swagger UI

🏗️ Mimari ve Tasarım

Proje, sorumlulukların ayrılması (SoC) ilkesine dayanan Clean Architecture prensiplerini takip eder:

  • Controllers: Sadece HTTP isteklerini karşılar.
  • Services: Tüm iş mantığını (Business Logic), kuralları ve hesaplamaları içerir.
  • Repositories/Data: Veritabanı işlemlerini yönetir.
  • DTOs: Veri transferi için kullanılan modellerdir, veritabanı varlıklarını (Entity) dış dünyadan gizler.

🔌 Önemli API Uçları (Endpoints)

Metot Endpoint Açıklama Yetki
POST /api/auth/login Giriş yap, Access ve Refresh Token al ✅ (User)
POST /api/prediction Yarış için ilk 3 tahminini gönder ✅ (User)
POST /api/vote/driver Favori sürücüye oy ver ✅ (User)
POST /api/race/finish-race (Admin) Yarışı bitir, sonuçları hesapla ve ödül dağıtımını başlat ✅ (Admin)

🗺️ Yol Haritası (Roadmap)

  • Backend Mimarisi ve Veritabanı Kurulumu
  • Oylama ve Tahmin Mantığı (Validasyonlar Dahil)
  • JWT ve Refresh Token Entegrasyonu
  • Kazanan Hesaplama Algoritması
  • Frontend Entegrasyonu (React + TypeScript + Vite)
  • Web3 / Akıllı Sözleşme Entegrasyonu (Gerçek NFT Mintleme) [Geliştiriliyor]

About

Production-grade ASP.NET Core API with JWT authentication, voting system, and blockchain-powered NFT rewards.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages