Minimal ama gerçekçi, yüksek standartlı bir finansal backend iskeleti. Güvenli, ölçeklenebilir ve denetlenebilir finansal operasyonlar için tasarlandı.
Keşfet • Kurulum • Mimari • Katkı Sağla
Important
Bu proje, finansal sistemlerde hata payını sıfıra indirmek ve yüksek tutarlılık (consistency) sağlamak üzere kurgulanmıştır.
- 🏦 Gelişmiş Hesap Yönetimi: Modüler domain modelleri ile hesap ve bakiye takibi.
- 💸 Hassas Finansal Matematik:
Decimaltabanlı, yuvarlama hatası içermeyen para hesaplama kütüphanesi. - 🧬 Modüler Mimari: Mikroservislere bölünmeye hazır, Clean Architecture prensiplerine uygun yapı.
- 🩺 Operasyonel Kontrol Merkezi: Entegre sağlık taraması ve demo veri yönetim endpoint'leri.
- 🧪 Test-Driven Design:
pytestile %100 iş mantığı doğrulaması.
Geleneksel backend projelerinde para birimi genellikle float olarak tutulur veya hesaplar arası transferler birer "güncelleme" işlemi olarak görülür. Fintech Backend Starter bu hataları temelden düzeltir:
- Hassasiyet: Yuvarlama hataları bir fintech projesinin sonu olabilir. Biz
minor units(kuruş/cent) bazında tamsayı işlemleri yapıyoruz. - Güvenirlik: Her transfer işlemi bir defter (ledger) kaydı oluşturur. Bakiye sadece bu kayıtların bir sonucudur.
- Denetlenebilirlik: Kim, kime, ne zaman, neden para gönderdi? Bu soruların cevabı mimarinin kalbinde yer alır.
Fintech projelerinde standart yazılımlardan farklı olarak "tutarlılık" (Consistency) her şeydir. Sistemimiz aşağıdaki katmanlara ayrılmıştır:
graph TD
API[REST API - cmd/api_server] --> CORE[Core Domain - internal/core]
CORE --> ACCOUNTS[Accounts Domain]
CORE --> LEDGER[Ledger Domain - Roadmap]
ACCOUNTS --> MONEY[Money Pkg - pkg/money]
CORE --> GATEWAYS[Gateways Layer - internal/gateways]
style CORE fill:#1a1a1a,stroke:#3b82f6,stroke-width:2px,color:#fff
style API fill:#0f172a,stroke:#009688,stroke-width:1px,color:#fff
Tip
Daha derinlemesine bilgi için Fintech Deep Dive dökümanını inceleyin.
| Endpoint | Method | Açıklama | Örnek İstek (JSON) |
|---|---|---|---|
/health |
GET |
Sistemin çalışma durumunu kontrol eder. | - |
/accounts/{id}/balance |
GET |
Belirtilen hesabın anlık bakiyesini döner. | - |
/transactions/transfer |
POST |
Hesaplar arası para transferi başlatır. | {"from_account_id": "demo-1", "to_account_id": "demo-2", "amount": 25.50} |
curl -X POST "http://127.0.0.1:8000/transactions/transfer" \
-H "Content-Type: application/json" \
-d '{
"from_account_id": "demo-1",
"to_account_id": "demo-2",
"amount": 25.00,
"currency": "TRY"
}'# Bağımlılıkları yükle
pip install -r requirements.txtuvicorn cmd.api_server.main:app --reload- Sağlık Kontrolü:
GET /health→ 127.0.0.1:8000/health - Bakiye Sorgulama:
GET /accounts/demo-1/balance→ Link - Swagger Dokümantasyonu: /docs
fintek/
├── cmd/ # Entrypoints (REST, Workers)
├── internal/ # Özel İş Mantığı (Core & Gateways)
├── pkg/ # Paylaşılan Kütüphaneler (Money, Logger)
├── docs/ # Mimari ve Derin Teknik Bilgi
├── _assets/ # Görsel Varlıklar ve Branding
└── tests/ # Güvenlik ve Mantık Testleri- Ledger (Defter) Modülü: Double-entry bookkeeping entegrasyonu.
- Idempotent Transferler: Ödeme akışlarında hata toleransı.
- Payment Gateway: Sahte bir banka/iyzico entegrasyonu.
- Audit Log: Tüm finansal hareketlerin değişmez kaydı.
- Otomatik Dokümantasyon: Uygulama çalışırken /docs adresinden interaktif Swagger arayüzüne erişebilirsiniz.
- Audit Logs: Her transfer işlemi terminalde ve ledger servisinde iz bırakır.
- Hata Yönetimi: Yetersiz bakiye veya geçersiz hesap ID'leri için anlamlı HTTP 400/404 hataları döner.
Proje şimdilik demo amaçlı in-memory çalışmaktadır. Gerçek bir veritabanı entegrasyonu için:
.envdosyası oluşturun.DB_URLveAPI_KEYbilgilerini tanımlayın.platform/databasemodülünü aktif edin.
Bu proje MIT Lisansı altında korunmaktadır. Finansal verilerin güvenliği için asla secrets paylaşmayın ve .env dosyalarınızı güvenli tutun.
