Budget Breeze: Yapay Zeka Destekli Kişisel Finans Uygulaması
Google Play'de yayında olan, ham finansal veriyi eyleme dönüştürülebilir içgörülere çeviren Flutter uygulaması. GetX tabanlı MVVM mimarisi, gerçek zamanlı Firestore senkronizasyonu, Cloud Functions üzerinden Vertex AI destekli kişiselleştirilmiş finansal analiz raporları, Cloud Scheduler ile idempotent tekrarlayan gider otomasyonu, fl_chart & Syncfusion ile interaktif görselleştirmeler ve çoklu dil desteği'ni kapsayan gözlemlenebilirlik yığını içerir.
Galeri
Problem Tanımı
Çoğu insan her ay sonunda aynı soruları sorar: "Cebimde ne kadar kaldı?", "Paramı nerelere harcadım?" Tatmin edici bir yanıt bulamaz. Manuel takip yorucudur, tablolar analitik bir öngörü sunmaz, mevcut uygulamalar ise ya karmaşıklıklarıyla bunaltır ya da gelişmiş bir muhasebe defterinden öteye geçemez. Amaç; harcama takibini gerçek anlamda zahmetsiz hale getiren, interaktif görselleştirmelerle anlamlı davranışsal kalıpları ortaya çıkaran ve kullanıcıların sezgi yerine veriye dayalı kararlar alabilmesi için üretken yapay zekayı kullanarak bağlamsal finansal danışmanlık raporları üreten bir uygulama geliştirmekti.
Rolüm: Lead Developer & Architect
Kişisel finans yönetimi, herkesin farkında olduğu ancak çok az ürünün gerçek derinlikte çözdüğü bir problem alanıdır. Tablolar disiplin gerektirir ve analitik bir katman sunmaz; banka uygulamaları hesaplar arası perspektiften yoksundur; çoğu üçüncü parti takip aracı ise içgörü üretmeksizin yalnızca grafik gösterir. Budget Breeze bu boşluğu kapatmak için tasarlandı. Yalnızca her işlemi kaydetmekle ve kategorize etmekle kalmayıp bu veri üzerinde akıl yürüterek kişiselleştirilmiş, yapay zeka destekli finansal rehberlik sunan tek bir uygulama.
Figma prototiplerinden beslenen UI mimarisi (UI/UX iş birliğiyle Nurgül Karayiğit), Firestore veri modelleme, Cloud Functions orkestrasyonu, Vertex AI prompt mühendisliği ve uçtan uca Google Play yayın yönetimi. Proje; mobil mimari, sunucusuz arka uç tasarımı, üretken yapay zeka entegrasyonu ve tam production operasyonlarını kapsayan titiz bir mühendislik egzersizine dönüştü.
Temel Teknik Özellikler
A. İşlem Takibi ve Veri Katmanı
Gerçek zamanlı senkronizasyonlu yapılandırılmış finansal kayıtlar
Kullanıcılar gelir ve giderlerini özel kategoriler, tarih meta verisi ve açıklayıcı etiketlerle kaydeder. Veri modeli, kalıtım tabanlı bir hiyerarşi izler. BaseTransactionModel'den türetilen Expense ve Income sınıfları ve Firestore ile çift yönlü serileştirme fromJson/toJson aracılığıyla sağlanır. Gerçek zamanlı Firestore dinleyicileri veri değişikliklerini oturumlar arasında anında yayarken, çevrimdışı kalıcılık Firestore'un yerel önbellek ve çakışma çözüm mekanizmasına dayalı olarak ağ bağlantısı olmaksızın tam işlevsellik sağlar.
Cloud Scheduler ile idempotent tekrarlayan gider otomasyonu
"Tekrarlayan" olarak işaretlenen giderler, Google Cloud Scheduler tarafından her gün 03:00'te (Europe/Istanbul) tetiklenen özel bir Cloud Function — processRecurringExpenses — aracılığıyla sonraki fatura dönemlerine otomatik olarak kopyalanır. Fonksiyon, her kullanıcının Firestore alt koleksiyonunu tarar; mevcut kopyaları tespit etmek için originalRecurringId ve ay sınırı Timestamp'leriyle bileşik sorgular çalıştırır; yeni kayıtları deterministik belge ID'leriyle (templateId_YYYY_MM) yazar. Bu tasarım mutlak idempotency garantisi sağlar: eş zamanlı çalıştırmalar ve Scheduler yeniden deneme fırtınaları sıfır yinelenen kayıt üretir.
B. Vertex AI Entegrasyonu — Üretken Finansal Danışmanlık
Yapay zeka destekli finansal analiz raporları
Uygulamanın öne çıkan özelliği: kullanıcılar haftalık, aylık veya yıllık aralıklara göre kapsamlı yapay zeka destekli finansal analiz raporu talep edebilir. Bir onCall Cloud Function — analyzeFinancials — kullanıcının totalIncome değerini, kategori bazlı gider dağılımını ve seçilen tarih aralığını toplar; ardından Vertex AI'nin Gemini 3.0 Flash modeline iletilmek üzere yapılandırılmış bir prompt oluşturur. Model; yönetici özeti, temel harcama kalıbı gözlemleri, somut ve önceliklendirilmiş tasarruf önerileri ve 50/30/20 bütçeleme çerçevesine göre kıyaslanmış bir finansal sağlık puanı içeren yapılandırılmış bir yanıt döner. Tamamlanan raporlar Firestore'a users/{userId}/analysis_reports altında kalıcı hale getirilir ve oluşturulduğunda yerel FCM push bildirimi gönderilir.
Çok dilli prompt mühendisliği ve çıkarım yapılandırması
Finansal promptlar, Cloud Function'ın callable payload'ına bir language parametresi aktarılarak kullanıcının aktif diline — Türkçe veya İngilizce — dinamik olarak yerelleştirilir. Bu yaklaşım, modelin tonu, finansal terminolojisi ve sayı biçimlendirme kurallarının okuyucunun dilsel bağlamıyla örtüşmesini sağlar. Çıkarım temperature 0.3 ve topP 0.8 ile yapılandırılarak model, yaratıcı varyans yerine olgusal tutarlılık ve tekrarlanabilirliğe doğru kasıtlı olarak yönlendirilir — kesinliğin yenilikten üstün tutulduğu danışmanlık içeriği için bilinçli bir tercih.
C. İnteraktif Analitik ve Görselleştirme
GetX ile reaktif grafik render'lama
fl_chart ve Syncfusion Flutter Charts; kategorik gider dağılımı için pasta grafikler, dönemler arası karşılaştırma için çubuk grafikler ve uzunlamasına analiz için trend çizgileri olmak üzere kapsamlı bir interaktif görselleştirme seti sunar. ViewModel katmanı — ArchiveCashController — pieChartData ve filtrelenmiş sonuç kümeleri gibi türetilmiş veri setlerini GetX observable'ları kullanarak reaktif biçimde hesaplar. Her durum değişikliği Obx sarmalayıcıları aracılığıyla kapsamlı UI yeniden oluşturmalarını tetikler; gereksiz widget ağacı yeniden render'lamaları önlenir. Kullanıcılar kategori, tarih aralığı ve işlem türü üzerinden çok boyutlu filtreler oluşturarak finansal davranışlarını hassasiyetle sorgulayabilir.
D. Production Altyapısı ve Güvenlik
Tam yığın Firebase gözlemlenebilirliği
Firebase Crashlytics, ele alınmamış her istisnayı hızlı hata tespiti için tam yığın izleri ve cihaz meta verisiyle yakalar. Performance Monitoring; soğuk başlatma gecikmesini, ekran oluşturma sürelerini ve HTTP gidiş-dönüş sürelerini ölçerek gerilemelerin tespit edileceği performans referans noktaları oluşturur. Firebase Analytics; ekran görüntülemeleri, rapor oluşturma talepleri ve uygulama içi satın alma dönüşüm hunileri gibi ayrıntılı etkileşim olaylarını kaydederek veriye dayalı iterasyonu mümkün kılar. Firebase App Check, her Cloud Function çağrısında ve Firestore erişiminde doğrulama uygular; doğrulanmamış istemcilerden gelen istekleri reddederek tekrar oynatma ve API kötüye kullanım saldırılarını engeller.
Monetizasyon mimarisi
Uygulama freemium bir model benimser: Google AdMob reklam destekli ücretsiz katman kullanımını sağlarken, uygulama içi satın alma aboneliği sınırsız AI rapor oluşturmayı açar. Premium hak, istemci taraflı atlatmayı önlemek amacıyla Cloud Functions içinde sunucu tarafında doğrulanır. Uygulama; otomatik yayın pipeline'larıyla Google Play'de dağıtılır ve Flutter'ın in_app_update API'si entegre edilerek zorunlu ve esnek yükseltme istemlerinin sorunsuz biçimde gösterilmesi sağlanır; kritik yamaların kullanıcılara sürtünmesiz ulaşması güvence altına alınır.
Sonuç: Ölçülebilir fayda
Budget Breeze, kavramsal bir yan projeden tamamen yayınlanmış, gelir üretebilen bir production uygulamasına evrildi. Disiplinli MVVM katmanlaması doğru sunucusuz araçlarla ve net bir ürün vizyonuyla bir araya getirildiğinde, tek bir mühendisinin veri mimarisinden uygulama mağazası dağıtımına kadar uçtan uca cilalı, yapay zeka destekli bir mobil ürün teslim edebileceğini kanıtlar.
- Google Play'de canlı: gerçek kullanıcı tabanı, aktif kilitlenme raporlama pipeline'ı ve kapalı production geri bildirim döngüleri.
- Vertex AI entegrasyonu: statik grafik tabanlı raporlamanın ötesine geçen otomatize ve bağlamsal finansal danışmanlık.
- İdempotent CRON otomasyonu: deterministik belge ID stratejisi, Scheduler yeniden denemeleri ve eş zamanlı fonksiyon çalıştırmaları genelinde sıfır yinelenen kayıt garantisi sağlar.
- Eksiksiz gözlemlenebilirlik yığını: Crashlytics, Performance Monitoring, Analytics ve App Check kapalı döngülü bir production geri bildirim sistemi oluşturur.
- Tam çok dilli destek: yapay zeka tarafından oluşturulan rapor içeriği ve promptlar dahil tüm UI yüzeylerinde kesintisiz TR/EN geçişi.
Veri Mimarisi
users/{userId} # User profile, auth provider metadata, device tokens
/expenses/{expenseId} # Expense records (amount, category, date, isRecurring, originalRecurringId)
/incomes/{incomeId} # Income records (amount, category, date)
/analysis_reports/{reportId} # Vertex AI financial analysis reports (report body, date range, analysis type, timestamp)
/categories/{categoryId} # User-defined income and expense categoriesAll financial data is scoped within per-user subcollections, providing natural data isolation and straightforward Firestore security rules without collection group queries. Expenses, incomes, and AI reports occupy separate subcollections, enabling each to be independently queried, indexed, and paginated. For recurring expenses, the originalRecurringId field establishes a flat reference between template and derived copies — preserving the relationship without requiring nested document references or denormalisation.
Composite indexes are defined to support the application's primary filter and sort patterns: (isRecurring + date) and (category + date) on expenses; (analysisType + timestamp) on analysis_reports. The CRON function's idempotency check — querying by originalRecurringId within month-boundary Timestamps — relies on a composite index to execute as a targeted document lookup rather than a full subcollection scan, ensuring the daily job remains performant as user data scales.
Güvenlik
Firebase Authentication supports both email/password and Google Sign-In flows. All Firestore security rules enforce user data isolation through strict request.auth.uid == userId checks — no cross-user data access is possible at the rules layer. AI analysis reports are write-protected at the rules level (allow write: if false) and can only be created or updated by Cloud Functions operating under the Admin SDK, preserving report integrity and preventing client-side manipulation.
The AI analysis function (analyzeFinancials) is exposed as an onCall Cloud Function, meaning all invocations are authenticated and attributable to a verified Firebase user. Firebase App Check adds a second attestation layer, rejecting requests originating outside the genuine application binary. Premium tier entitlement is validated server-side within the function, preventing free-tier users from circumventing report generation limits regardless of client-side state.
Security Rules Snippet
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
match /expenses/{expenseId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
match /incomes/{incomeId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
match /analysis_reports/{reportId} {
allow read: if request.auth != null && request.auth.uid == userId;
allow write: if false; // Write access restricted to Cloud Functions via Admin SDK
}
}Mühendislik Kararları
Architecture Diagram
Çerezler ve Analitik
Web sitesi deneyimini geliştirmek ve hizmetlerimizi iyileştirmek amacıyla sayfa görüntüleme ve kullanım istatistiklerine ilişkin anonim veriler toplanmaktadır. Toplanan veriler yalnızca analiz ve performans ölçümü amacıyla kullanılmakta olup kişisel veri içermemektedir.
Daha fazla bilgi için Gizlilik Politikası sayfasını inceleyebilirsiniz.
