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.
- 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)
- Hızlı bağış oluşturma
- Özel tutar belirleme (max 500.000 TL)
- Mesaj ekleme
- Anonim bağış desteği (isim gizleme)
- Kredi/Banka kartı ile ödeme
- 3D Secure desteği
- Ödeme iptali
- Tam ve kısmi iade
- 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)
- Özelleştirilebilir hedef başlığı
- Hedef tutarı ve bitiş tarihi
- Canlı progress bar
- Otomatik süre dolma kontrolü
- Hedef tamamlandığında kutlama ekranı
- QR Kod oluşturma (profil linki için)
- Sosyal paylaşım butonları (Twitter, Facebook, WhatsApp, LinkedIn)
- Profil linkini kopyalama
- Rate Limiting (spam koruması)
- JWT token doğrulama
- Iyzico webhook imza doğrulama
- 3D Secure desteği
- .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
- React 18 - UI framework
- Vite 5 - Build tool
- Tailwind CSS - Styling
- React Router v6 - Routing
- Axios - HTTP client
- Modular Monolith - Modüler yapı
- Clean Architecture - Katmanlı mimari
- Repository Pattern - Veri erişimi
- Options Pattern - Konfigürasyon
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/
- .NET 8.0 SDK
- Node.js 18+
- SQL Server (LocalDB veya Express)
- Iyzico Sandbox Hesabı
git clone https://github.com/kullanici/BirKahve.git
cd BirKahvesrc/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;"
}
}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.
{
"Jwt": {
"SecretKey": "en-az-32-karakterlik-gizli-anahtar-buraya",
"Issuer": "BirKahve",
"Audience": "BirKahve",
"ExpirationInMinutes": 60
}
}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 PaymentsDbContextcd src/API/BirKahve.API
dotnet runAPI varsayılan olarak https://localhost:7001 adresinde çalışır.
cd frontend
npm installnpm run devFrontend varsayılan olarak http://localhost:5173 adresinde çalışır.
| 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 |
| 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 |
| 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ı |
| 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 |
- Ana sayfadan "Kayıt Ol" butonuna tıkla
- Email, kullanıcı adı ve şifre gir
- Hesabın oluşturuldu!
- 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ş
- 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
- 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
- "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
| 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
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 |
Sandbox'tan canlıya geçmek için:
- Iyzico Merchant Panel adresinden canlı hesap oluştur
appsettings.Production.jsondosyasında:- API anahtarlarını canlı anahtarlarla değiştir
BaseUrl'ihttps://api.iyzipay.comyap
App:PublicBaseUrlayarını canlı domain'e çevir- HTTPS zorunlu olduğundan emin ol
MIT
- Fork et
- Feature branch oluştur (
git checkout -b feature/yeni-ozellik) - Commit et (
git commit -m 'Yeni özellik eklendi') - Push et (
git push origin feature/yeni-ozellik) - Pull Request aç






