Her kişisel finans uygulaması, bankacılık kimlik bilgilerinizi ister. Ben, bunu yapmayan bir uygulama geliştirdim.
Problem
Problem
Yıllardır finans durumumu dijital olarak takip ediyorum. Denediğim her uygulama aynı kalıbı takip etti: “Başlamak için bankanızla bağlantı kurun.” Bu durum, kimlik bilgilerinizi bir üçüncü parti agregatöre, örneğin Plaid’e vermeniz gerektiği anlamına geliyor. Bu da, işlemlerinizin tüm geçmişinin kontrol edemediğiniz sistemlerde akması demek.
Birçok fintech veri ihlalinin haberlerde yer aldığını gördükten sonra farklı bir yaklaşım benimsemeye karar verdim.
Yaklaşım
Yaklaşım
Whisper Money, bankanızla asla bağlantı kurmayan bir kişisel finans uygulaması. Bunun yerine, bankanızdan bir CSV veya XLS dosyası dışa aktarıyorsunuz (her banka bunu destekler) ve bunu içe aktarıyorsunuz. Bir yılın işlemleri yaklaşık 10 saniyede yükleniyor.
Fiziki bir zaman kaybı yok: Gerçek zamanlı senkronizasyon yok, ama tam gizlilik var. Haftada bir içe aktarmak benim için bir dakikadan az sürüyor ve kafa rahatlığı açısından buna değer.
Teknoloji Yığını
Teknoloji Yığını
Bunu en son Laravel ekosistemiyle inşa ettim:
- Laravel 12 (PHP 8.4) – Backend, hesaplar, işlemler, bütçeler, kategorilendirme ve kullanıcı yönetimini yönetiyor.
- React 19 – Tam TypeScript katı modunda frontend.
- Inertia.js v2 – Laravel ve React’i ayrı bir API oluşturmadan birleştiriyor. Deferred props, önceden yükleme ve yeni Form bileşeni her yerde kullanılıyor.
- Tailwind CSS v4 – CSS-first yapılandırması ve
@themedirektifi ile. - Laravel Wayfinder – Laravel rotalarından tip güvenli TypeScript fonksiyonları oluşturur. Frontend’de artık kodlanmış URL dizeleri yok.
- Pest v4 – Fabrikalar ve özellik testleri ile test kiti.
Mimari Kararlar
Mimari Kararlar
Neden Inertia, ayrı bir API yerine?
Bu tür bir ürün için Inertia mükemmel. SPA deneyimi (istemci tarafı yönlendirme, pürüzsüz geçişler, reaktif formlar) sağlarken ayrı bir API katmanı yönetmek zorunda kalmıyorsunuz. Backend, props’ları işler; frontend, bileşenleri render eder. Kimlik doğrulama, yetkilendirme ve doğrulama, standart Laravel yapılarına göre sunucu tarafında gerçekleşir.
Neden banka entegrasyonu yok?
Gizlilik dışında, bu ayrıca mimari basitliktir. Banka API entegrasyonları karmaşık: birden fazla agregatörle başa çıkmayı, bağlantı hatalarını yönetmeyi, OAuth akışlarını idare etmeyi ve hassas kimlik bilgilerini depolamayı gerektirir. Bunu tamamen kaldırarak, kod tabanı kullanıcıların harcamalarını anlamalarına odaklanabilir.
İkili dağıtım: OSS + SaaS
Aynı kod tabanı, hem kendi barındırılan versiyonunu hem de barındırılan SaaS’yi destekliyor. Laravel Pennant özellik bayrakları, her bağlamda nelerin mevcut olduğunu kontrol eder (örneğin, Stripe abonelikleri yalnızca SaaS versiyonu için etkindir). Bu, her şeyi tek bir kod tabanında saklarken bakım yükünü azaltır.
Ana Özellikler
Ana Özellikler
JSON Logic ile Otomasyon Kuralları
Kullanıcılar, kod yazmadan işlemleri otomatik olarak kategorilere ayırmak için kurallar oluşturabilir. Arkada, bu JSON Logic’i kullanıyor – koşullu mantığı temsil etmenin taşınabilir ve seri hale getirilebilir bir yoludur. Örnek kural: “Eğer işlem tanımında ‘Netflix’ varsa, kategoriyi ‘Abonelikler’ olarak ayarla ve etiketi ‘yenileyici’ ekle.”
Akıllı Bütçeler
Bütçeler farklı dönemleri (günlük, haftalık, aylık, yıllık) ve devretme türlerini destekliyor. Bir dönem için harcama bütçesi aşılınca, kalan miktar bir sonraki döneme devredilebilir.
Kendi Barındırma Kolaylığı
Proje, bir üretim Docker imajı, bir Docker Compose dosyası ve Coolify tek tıklama ile dağıtım şablonu içeriyor. Kendi sunucunuzda çalıştırmak dakikalar alıyor, saatler değil.
Deneyin
Deneyin
Proje, CC BY-NC 4.0 lisansı altında açık kaynaklıdır. Katkılarınızı bekliyoruz.
“Banka entegrasyonu yok” tercihinin sizce ne gibi etkileri var? Gerçek zamanlı senkronizasyonu, finansal verilerinizin gizliliği için feda eder misiniz?
Kaynak: Orijinal Makale


