Budgetory
iPhone ve Android için çok para birimli kişisel finans uygulaması
Genel bakış
Budgetory, iPhone ve Android için geliştirdiğim kendi kişisel finans uygulamam. Gelir ve giderlerinizi 15 para biriminden herhangi biriyle kaydediyorsunuz; uygulama bakiyenizi, eğilimleri ve kategorilere göre harcamalarınızı seçtiğiniz para biriminde gösteriyor. Mimariyi tasarladım; mobil uygulamayı ve backend’ini tek başıma geliştirdim.
iPhone sürümü App Store’da yayında. iOS ve Android için yeni sürümler şu anda incelemede.
Neler yapıyor
- Gelir ve giderleri, bütçeleri, birikim hedeflerini, hesapları ve hesaplar arası transferleri takip ediyor
- Tekrarlayan işlemler ve abonelikler; sunucu bunları kullanıcının kendi saat diliminde ekliyor
- Taksitli alışverişleriyle kredi kartları, borçlar ve altın, gümüş, döviz gibi varlıklar
- Ana ekran widget’ı olarak da iOS ve Android’de sunulan “harcanabilir tutar” tahmini
- Sistem belge tarayıcısıyla fiş tarama, işlem başına en fazla beş fotoğraf
- Tek bir ödemeyi birden fazla kategoriye bölme
- Aylık özet, hatırlatma bildirimleri ve CSV dışa aktarma
- Face ID kilidi ve ekrandaki tutarları gizleme seçeneği
- Avrupa Merkez Bankası’ndan günlük döviz kurları, cihazda önbellekleniyor
- Grafikler ve kategori dağılımları
- Altı dil: İngilizce, Türkçe, Almanca, Fransızca, İspanyolca ve Rusça
- VoiceOver, TalkBack, büyük metin ve Hareketi Azalt için erişilebilirlik desteği
Nasıl çalışıyor
- Önce çevrimdışı. Listeler sunucuyla senkronize oluyor ve uygulama bağlantı olmadan da kullanılabiliyor. ID’ler istemcide üretiliyor, yazma işlemleri PUT ve idempotency anahtarlarıyla yapılıyor; böylece tekrar denenen bir istek asla kopya kayıt oluşturmuyor.
- Ağa çıkmayan widget. Uygulama, özel bir native modül aracılığıyla paylaşılan App Group’a bir JSON anlık görüntüsü yazıyor ve gelecek ayın sonuna kadarki günleri önceden hesaplıyor; böylece widget’ın sunucuya hiç istek atması gerekmiyor. Orta boy widget’ta gider ya da gelir eklemek için kısayollar var.
- Native modüller. Ana ekran widget’ı, uygulama ikonu hızlı eylemleri, belge tarayıcı ve son işlemler önizlemesi özel Swift ve Kotlin modülleriyle çalışıyor.
- Uzaktan (OTA) güncellemeler. JavaScript güncellemeleri EAS Update ile yayınlanıyor; fingerprint tabanlı runtime sürümleri sayesinde bir güncelleme yalnızca native katmanı uyumlu olan build’lere ulaşıyor.
Teknolojiler
- Uygulama: Expo SDK 53, New Architecture üzerinde React Native 0.79, React 19, TypeScript, NativeWind, React Navigation, Reanimated, react-native-svg grafikleri, i18next, Firebase Authentication
- Backend: Python 3.12, FastAPI, SQLAlchemy, Alembic migration’larıyla PostgreSQL, Firebase ID token doğrulaması
Kalite
- Uygulamada yaklaşık 147 Jest ve React Native Testing Library test dosyası
- Backend’de 17 pytest test dosyası
- İki repoda da GitHub Actions CI
