Skip to content

unsalgel/BirKahve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BirKahve - Kahve Bağışı Platformu

BirKahve, içerik üreticileri ve yaratıcılar için modern bir kahve bağışı platformudur. Kullanıcılar, beğendikleri kişilere kahve ısmarlayarak destek olabilirler.

Ekran Görüntüleri

🔐 Kimlik Doğrulama

Kayıt    Giriş

Kayıt ve Giriş Sayfaları

👤 Profil

Profilim    Başka Profil

Kendi Profilim (düzenleme) ve Ziyaretçi Görünümü (bağış formu)

💳 Ödeme & Bağışlar

Ödeme    Bağışlarım

3D Secure Ödeme ve Bağış Geçmişi

📱 QR Kod

QR Kod

Profil linki için QR kod oluşturma

Özellikler

Kullanıcı Yönetimi

  • Kayıt ve giriş (JWT Authentication)
  • Profil düzenleme (bio, görünen ad)
  • Güvenli şifre saklama (BCrypt)
  • Remember me (Refresh Token ile HttpOnly Cookie)

Bağış Sistemi

  • Hızlı bağış oluşturma
  • Özel tutar belirleme (max 500.000 TL)
  • Mesaj ekleme
  • Anonim bağış desteği (isim gizleme)

Ödeme Entegrasyonu (Iyzico)

  • Kredi/Banka kartı ile ödeme
  • 3D Secure desteği
  • Ödeme iptali
  • Tam ve kısmi iade

Bağış Takibi

  • Gönderdiğim bağışlar
  • Aldığım bağışlar
  • İstatistikler (toplam, adet, net)
  • İade/İptal işlemleri
  • Yeni bağış bildirimi (görülmemiş bağışlara "YENİ" rozeti)

Bağış Hedefi

  • Özelleştirilebilir hedef başlığı
  • Hedef tutarı ve bitiş tarihi
  • Canlı progress bar
  • Otomatik süre dolma kontrolü
  • Hedef tamamlandığında kutlama ekranı

Sosyal Özellikler

  • QR Kod oluşturma (profil linki için)
  • Sosyal paylaşım butonları (Twitter, Facebook, WhatsApp, LinkedIn)
  • Profil linkini kopyalama

Güvenlik

  • Rate Limiting (spam koruması)
  • JWT token doğrulama
  • Iyzico webhook imza doğrulama
  • 3D Secure desteği

Teknolojiler

Backend

  • .NET 8.0 - ASP.NET Core Web API
  • Entity Framework Core 8 - ORM
  • Microsoft SQL Server - Veritabanı
  • Iyzipay .NET SDK - Ödeme entegrasyonu
  • FluentValidation - Input doğrulama
  • BCrypt.Net - Şifre hashleme

Frontend

  • React 18 - UI framework
  • Vite 5 - Build tool
  • Tailwind CSS - Styling
  • React Router v6 - Routing
  • Axios - HTTP client

Mimari

  • Modular Monolith - Modüler yapı
  • Clean Architecture - Katmanlı mimari
  • Repository Pattern - Veri erişimi
  • Options Pattern - Konfigürasyon

Proje Yapısı

BirKahve/
├── src/
│   ├── API/
│   │   └── BirKahve.API/              # Web API katmanı
│   ├── Modules/
│   │   ├── Identity/                   # Kimlik modülü
│   │   │   ├── Application/           # İş mantığı
│   │   │   ├── Domain/                # Entity'ler
│   │   │   └── Infrastructure/        # Veritabanı
│   │   ├── Donations/                  # Bağış modülü
│   │   │   ├── Application/
│   │   │   ├── Domain/
│   │   │   └── Infrastructure/
│   │   └── Payments/                   # Ödeme modülü
│   │       ├── Application/
│   │       ├── Domain/
│   │       └── Infrastructure/
│   └── Shared/
│       └── BirKahve.Shared/           # Ortak kodlar
└── frontend/                           # React uygulaması
    └── src/
        ├── components/
        ├── pages/
        ├── auth/
        └── lib/

Kurulum

Gereksinimler

1. Projeyi Klonla

git clone https://github.com/kullanici/BirKahve.git
cd BirKahve

2. Veritabanı Bağlantısını Ayarla

src/API/BirKahve.API/appsettings.json dosyasını düzenle:

{
  "ConnectionStrings": {
    "IdentityConnection": "Server=(localdb)\\mssqllocaldb;Database=BirKahve_Identity;Trusted_Connection=True;",
    "DonationsConnection": "Server=(localdb)\\mssqllocaldb;Database=BirKahve_Donations;Trusted_Connection=True;",
    "PaymentsConnection": "Server=(localdb)\\mssqllocaldb;Database=BirKahve_Payments;Trusted_Connection=True;"
  }
}

3. Iyzico API Anahtarlarını Ayarla

Aynı dosyada Iyzico ayarlarını ekle:

{
  "Iyzico": {
    "ApiKey": "sandbox-XXXXXXXXXXXX",
    "SecretKey": "sandbox-XXXXXXXXXXXX",
    "BaseUrl": "https://sandbox-api.iyzipay.com"
  }
}

Not: Sandbox anahtarlarını Iyzico Merchant Panel adresinden alabilirsin.

4. JWT Ayarlarını Yapılandır

{
  "Jwt": {
    "SecretKey": "en-az-32-karakterlik-gizli-anahtar-buraya",
    "Issuer": "BirKahve",
    "Audience": "BirKahve",
    "ExpirationInMinutes": 60
  }
}

5. Veritabanı Migration'larını Çalıştır

cd BirKahve

# Identity modülü
dotnet ef database update --project src/Modules/Identity/BirKahve.Modules.Identity.Infrastructure --startup-project src/API/BirKahve.API --context IdentityDbContext

# Donations modülü
dotnet ef database update --project src/Modules/Donations/BirKahve.Modules.Donations.Infrastructure --startup-project src/API/BirKahve.API --context DonationsDbContext

# Payments modülü
dotnet ef database update --project src/Modules/Payments/BirKahve.Modules.Payments.Infrastructure --startup-project src/API/BirKahve.API --context PaymentsDbContext

6. Backend'i Başlat

cd src/API/BirKahve.API
dotnet run

API varsayılan olarak https://localhost:7001 adresinde çalışır.

7. Frontend Bağımlılıklarını Yükle

cd frontend
npm install

8. Frontend'i Başlat

npm run dev

Frontend varsayılan olarak http://localhost:5173 adresinde çalışır.

API Endpoint'leri

Auth

Method Endpoint Açıklama
POST /api/auth/register Yeni kullanıcı kaydı
POST /api/auth/login Giriş yap
POST /api/auth/refresh Token yenile
POST /api/auth/logout Çıkış yap

User

Method Endpoint Açıklama
GET /api/user/{id} Kullanıcı bilgisi
GET /api/user/username/{username} Username ile ara
PUT /api/user/{id} Profil güncelle

Donation

Method Endpoint Açıklama
POST /api/donation Bağış oluştur
GET /api/donation/{id} Bağış detayı
GET /api/donation/my-donations Gönderdiğim bağışlar
GET /api/donation/received Aldığım bağışlar
POST /api/donation/mark-seen Bağışları görüldü işaretle
GET /api/donation/unseen-count Görülmemiş bağış sayısı

Payment

Method Endpoint Açıklama
POST /api/payment Ödeme yap
POST /api/payment/3ds/initialize 3D Secure başlat
POST /api/payment/donation/{id}/cancel Ödeme iptal
POST /api/payment/donation/{id}/refund Ödeme iade

Kullanım

1. Kayıt Ol

  • Ana sayfadan "Kayıt Ol" butonuna tıkla
  • Email, kullanıcı adı ve şifre gir
  • Hesabın oluşturuldu!

2. Profil Düzenle

  • Giriş yaptıktan sonra "Profilim" e git
  • Bio ve görünen adını düzenle
  • Profil linkini paylaş: birkahve.com/kullaniciadin
  • QR kod oluştur ve indir
  • Sosyal medyada paylaş

3. Bağış Hedefi Oluştur

  • Profilinde "Bağış Hedefi" bölümüne git
  • Hedef başlığı gir (örn: "Yeni mikrofon için")
  • Hedef tutarı belirle
  • Bitiş tarihi seç (gelecek bir tarih olmalı)
  • Kaydet ve ziyaretçilerin progress bar'ı görmesini sağla
  • Hedef tamamlandığında kutlama ekranı görünür
  • Süre dolduğunda hedef otomatik gizlenir

4. Bağış Yap

  • Desteklemek istediğin kişinin profiline git
  • Tutar seç veya özel tutar gir
  • Mesaj ekle (isteğe bağlı)
  • "Anonim bağış" seçeneğini işaretle (isteğe bağlı)
  • "Bağışla → Ödeme" butonuna tıkla
  • Kart bilgilerini gir ve öde

5. Bağışları Takip Et

  • "Bağışlarım" sayfasından gönderdiğin ve aldığın bağışları gör
  • Yeni gelen bağışlar "YENİ" rozetiyle işaretlenir
  • Gerekirse iade veya iptal işlemi yap

Test Kartları (Sandbox)

Kart Numarası Banka Sonuç
5528790000000008 Finansbank Başarılı
5400360000000003 Denizbank Başarılı
4054180000000007 Ziraat Başarılı (Non-3D)
5168880000000002 Akbank Başarısız

Test için:

  • Son kullanma: 12/2030
  • CVC: 123

Rate Limiting

API istekleri aşağıdaki limitlerle korunmaktadır:

Endpoint Limit
Auth (login, register) 10 istek/dakika
Payment 5 istek/dakika
Donation 10 istek/dakika
Genel 100 istek/dakika

Canlıya Geçiş

Sandbox'tan canlıya geçmek için:

  1. Iyzico Merchant Panel adresinden canlı hesap oluştur
  2. appsettings.Production.json dosyasında:
    • API anahtarlarını canlı anahtarlarla değiştir
    • BaseUrl'i https://api.iyzipay.com yap
  3. App:PublicBaseUrl ayarını canlı domain'e çevir
  4. HTTPS zorunlu olduğundan emin ol

Lisans

MIT

Katkıda Bulunma

  1. Fork et
  2. Feature branch oluştur (git checkout -b feature/yeni-ozellik)
  3. Commit et (git commit -m 'Yeni özellik eklendi')
  4. Push et (git push origin feature/yeni-ozellik)
  5. Pull Request aç

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages