Modern ve kullanıcı dostu bir aylık bütçe takip uygulaması
Harcamalarınızı kolayca yönetin, limitinizi belirleyin ve finansal hedeflerinize ulaşın.
Limitim, aylık harcamalarınızı takip etmenizi ve bütçenizi yönetmenizi sağlayan minimalist bir mobil uygulamadır. Karmaşık özelliklerden uzak, kullanımı kolay ve etkili bir bütçe takip deneyimi sunar.
- 🎯 Basit ve Etkili: Karmaşık kategoriler veya hesaplamalar yok, sadece limit belirle ve takip et
- 🚀 Hızlı Kullanım: Harcama eklemek saniyeler alır
- 📊 Görsel Geri Bildirim: Bütçenizi bir bakışta görebilirsiniz
- 🌙 Modern Tasarım: Material Design 3 ile koyu/açık tema desteği
- ♿ Erişilebilir: Özelleştirilebilir yazı boyutları ile herkes için ulaşılabilir
- 🇹🇷 Türkçe: Tamamen Türkçe arayüz
Uygulamanın en güncel halini denemek için aşağıdaki butona tıklayarak APK dosyasını indirebilirsiniz:
![]() Onboard Sayfası |
![]() Ana Sayfa |
![]() Yeni Dönem Başlatma |
![]() Yeni Harcama Ekleme |
![]() Harcamalar |
![]() Harcama Detayı |
![]() Dönemi Kaydet |
![]() Takvim Görünümü |
![]() Geçmiş Görünümü |
![]() Geçmiş Detay Görünümü |
Aylık harcama limitinizi belirleyin ve gerçek zamanlı olarak takip edin.
- Aylık Limit Belirleme: Her ay başında veya istediğiniz zaman limit belirleyebilirsiniz
- Canlı Takip: Kalan bütçeniz ve toplam harcamanız her zaman görünür
- Renkli Göstergeler:
- 🟢 Yeşil: Kalan bütçe
- 🔴 Kırmızı: Yapılan harcama
- Limit Güncelleme: Mevcut dönemde limitinizi istediğiniz zaman değiştirebilirsiniz
- Dikey Düzen: Büyük yazı boyutlarında bile rahatlıkla okunabilir etiket/değer ayrımı
- Ana ekranda "Yeni Limit Belirle" butonuna tıklayın
- Aylık harcama limitinizi girin (örn: 5000 ₺)
- "Bütçeyi Başlat" ile döneminizi başlatın
- Kalan bütçenizi ve harcamanızı üst kısımda göreceksiniz
Tüm harcamalarınızı kolayca ekleyin, düzenleyin ve takip edin.
- Hızlı Ekleme: Floating Action Button (+) ile hızlı ekleme
- Basit Form:
- Harcama başlığı/açıklaması
- Tutar (₺)
- Otomatik tarih kaydı
- Harcama Listesi: Tüm harcamalarınız kronolojik sırada
- Detay Görünümü: Her harcamanın tam bilgilerine erişim
- Düzenleme: Kayıtlı harcamaları güncelleme
- Silme Seçenekleri:
- Kaydırarak silme (swipe to delete)
- Detay sayfasından silme
- Tutar Gösterimi: Harcama miktarları bold ve net görünür
- Virgül veya nokta kullanabilirsiniz (5,50 veya 5.50)
- Başlık otomatik olarak büyük harfle başlatılır
- Tarih otomatik olarak bugün olarak atanır
Harcamalarınızı takvim üzerinde görselleştirin ve günlük takip yapın.
- Aylık Takvim: TableCalendar widget'ı ile profesyonel takvim görünümü
- Harcama İşaretleyicileri: Harcama yapılan günler takvimde işaretlenir
- Ay Navigasyonu: Kolayca önceki/sonraki aya geçiş yapın
- Günlük Filtreleme: Belirli bir tarihin harcamalarını görün
- Görsel Vurgulama:
- Bugün vurgulanır
- Seçili gün vurgulanır
- Harcama yapılan günler işaretlenir
- Türkçe Yerelleştirme: Ay ve gün isimleri Türkçe
- Hangi günlerde daha çok harcama yaptığınızı görmek
- Belirli bir tarihteki harcamaları incelemek
- Aylık harcama dağılımını görselleştirmek
Tamamlanmış bütçe dönemlerinizi saklayın ve analiz edin.
- Dönem Kaydetme: Ay sonunda döneminizi arşive taşıyın
- Özel İsimlendirme: Dönemlerinize özel isimler verin (örn: "Ocak 2026 - Tatil Ayı")
- Dönem Detayları:
- Belirlenen limit
- Toplam harcama
- Tüm harcama listesi
- Dönem tarihi (ay/yıl)
- Salt Okunur Mod: Arşivlenmiş harcamalar sadece görüntülenir (düzenleme/silme yapılamaz)
- Kronolojik Sıralama: En yeni dönemden en eskiye
- Harcama Analizi: Geçmiş alışkanlıklarınızı inceleyin
- Ay sonu geldiğinde üst menüden "Dönemi Kaydet"e tıklayın
- İsteğe bağlı özel bir isim verin
- "Onayla" ile kaydedin
- Harcamalarınız otomatik olarak arşive taşınır
- Yeni bir dönem için limit belirleme ekranı açılır
Uygulamayı tercihinize göre özelleştirin.
- 🌞 Açık Mod (Light Mode): Gündüz kullanım için ideal
- 🌙 Koyu Mod (Dark Mode): Gece kullanımı ve OLED ekranlar için
- 🔄 Sistem Ayarı: Telefonunuzun tema ayarını takip eder
Görme zorluğu yaşayan kullanıcılar için özelleştirilebilir metin boyutları.
- Geniş Aralık: %80 - %150 arası 14 farklı boyut seçeneği
- Hassas Kontrol: Slider ile kolay ve hassas ayarlama
- Canlı Önizleme: Değişiklikleri anında görebilirsiniz
- Yüzde Göstergesi: Mevcut boyut oranını görün
- Varsayılana Dön: Tek tıkla %100'e dönüş butonu
- Kapsamlı Uygulama:
- Tüm metin içerikleri
- Buton etiketleri
- Navigation bar ikon ve yazıları
- AppBar başlıkları
- Liste öğeleri
- Dialog ve bottom sheet'ler
- Dikey Düzen: LimitView widget'ında büyük yazılarda etiket ve değerler alt alta dizilir
- FittedBox: Taşma durumlarında otomatik ölçekleme
- Dinamik İkon Boyutları: Navigation bar ikonları da scale olur
- Renk İnheritance: Buton renkleri doğru şekilde inherit edilir
- Ayarlar → "Yazı Boyutu"
- Slider'ı hareket ettirin
- Önizlemeyi kontrol edin
- İstediğinizde "Varsayılana Dön" butonu
Yeni kullanıcılar için interaktif 4 sayfalık uygulama tanıtımı.
Uygulama açılırken gösterilen özel splash screen ile profesyonel bir kullanıcı deneyimi.
- 🎨 Özel Tasarım: App icon (
assets/icon.png) ile markalı görünüm - 🌓 Dark/Light Mode Uyumlu: Her iki temada da uyumlu arka plan
- 🔄 Loading Indicator: Yeşil renkli animasyonlu yükleme göstergesi
- ⚙️ Arka Plan İşlemler:
- Hive database initialization
- Adapter kayıtları (Month, Expense)
- Box açma işlemleri
- HydratedBloc hazırlık
Güvenli ve hızlı yerel veri saklama.
- Hive: NoSQL yerel veritabanı
- HydratedBloc: Otomatik state persistence
- Path Provider: Platform bağımsız dosya yolu yönetimi
Month (Bütçe Dönemi)
{
id: String // Benzersiz kimlik
name: String // Ay adı (Ocak, Şubat, vb.)
year: int // Yıl
limit: double // Belirlenen limit
customName: String? // Kullanıcı tanımlı isim
}Expense (Harcama)
{
id: String // Benzersiz kimlik
monthId: String // Bağlı olduğu dönem ID'si
title: String // Harcama başlığı
amount: double // Tutar
date: DateTime // Harcama tarihi
}- CRUD İşlemleri: Create, Read, Update, Delete
- İlişkisel Veri: Expense → Month ilişkisi
- Otomatik Senkronizasyon: State değişiklikleri otomatik kaydedilir
- Veri Bütünlüğü: Dönem silindiğinde ilişkili harcamalar da silinir
- Ayarlar → "Tüm Verileri Temizle"
- Onay dialogu gerektirir
- Tüm dönemler ve harcamalar silinir
- Geri alınamaz işlem!
BLoC pattern ile temiz ve ölçeklenebilir mimari.
SessionBloc 📌
- Sorumluluk: Aktif bütçe dönemi yönetimi
- Events:
StartNewSession: Yeni dönem başlatAddExpenseEvent: Harcama ekleUpdateExpenseEvent: Harcama güncelleDeleteExpenseEvent: Harcama silUpdateSessionLimit: Limit güncelleResetSessionEvent: Dönemi sıfırla
- States:
ActiveSession: Aktif dönem varNoActiveSession: Aktif dönem yok
- Veri: Aktif Month + ilişkili Expense'ler
HistoryBloc 📚
- Sorumluluk: Tamamlanmış dönemleri yönetme
- Events:
LoadHistoryEvent: Geçmişi yükleSaveMonthEvent: Dönemi kaydet
- States:
HistoryLoading: YükleniyorHistoryLoaded: YüklendiHistoryError: Hata
- Veri: Month listesi (arşiv)
CalendarCubit 📅
- Sorumluluk: Takvim görünümü state'i
- Methods:
loadMonth: Belirli bir ayı yükleselectDate: Tarih seç
- States:
CalendarLoading: YükleniyorCalendarLoaded: Yüklendi (focusedMonth, selectedDay, expenses)
- Veri: Seçili ay ve harcamalar
ThemeCubit 🎨
- Sorumluluk: Tema tercihi yönetimi
- Methods:
updateTheme(ThemeMode) - State:
ThemeMode(light, dark, system) - Persistence: HydratedCubit (otomatik kaydedilir)
TextScaleCubit 🔤
- Sorumluluk: Yazı boyutu tercihi
- Methods:
updateScale(double) - State:
double(0.8 - 1.5 arası) - Persistence: HydratedCubit
- Validation: Min/max değer kontrolü
OnboardingCubit 🎓
- Sorumluluk: Onboarding tamamlanma durumu
- Methods:
completeOnboarding()resetOnboarding()
- State:
bool(completed/not completed) - Persistence: HydratedCubit
Kullanıcı Aksiyonu (UI)
↓
Event Dispatch
↓
BLoC Processing
↓
Repository Call
↓
Hive Operation
↓
New State Emit
↓
BlocBuilder Rebuild
↓
UI Update (Widget)
- Flutter: ^3.0.0 - Cross-platform UI framework
- Dart: ^3.0.0 - Programlama dili
- flutter_bloc: ^8.1.3 - BLoC pattern implementation
- hydrated_bloc: ^9.1.2 - Automatic state persistence
- hive: ^2.2.3 - Lightweight NoSQL database
- hive_flutter: ^1.1.0 - Flutter integration for Hive
- path_provider: ^2.1.1 - File system path management
- table_calendar: ^3.0.9 - Customizable calendar widget
- Material Design 3: Modern design system
- intl: ^0.18.1 - Internationalization and date formatting
- build_runner: Code generation
- hive_generator: Hive adapter generation
- Uygulamayı ilk kez açtığınızda 4 sayfalık tanıtım görünür
- Her sayfayı okuyun veya "Atla" ile geçin
- Son sayfada "Başlayalım" butonuna tıklayın
- "Yeni Limit Belirle" butonuna tıklayın
- Aylık harcama limitinizi girin (örn: 5000)
- "Bütçeyi Başlat" ile onaylayın
- Sağ alttaki (+) FAB butonuna tıklayın
- Harcama başlığı girin (örn: "Market alışverişi")
- Tutarı girin (örn: 250.50)
- "Harcama Ekle" ile kaydedin
- Ana ekranda FAB (+) butonuna basın
- Başlık alanına harcama açıklaması girin
- Tutar alanına miktarı girin (virgül veya nokta kullanabilirsiniz)
- "Harcama Ekle" butonuna basın
- Harcamanız listeye eklenir ve limit güncellenir
- Ana ekranda tüm harcamalarınız listelenmiş olarak görünür
- Her item'da başlık, tarih ve tutar bilgisi vardır
- Bir harcamaya tıklayarak detay sayfasını açabilirsiniz
- Harcamaya tıklayın (detay sayfası açılır)
- "Harcamayı Düzenle" butonuna basın
- Başlık veya tutarı değiştirin
- "Harcamayı Güncelle" ile kaydedin
Yöntem 1: Kaydırarak Silme
- Harcama item'ında sola kaydırın (swipe left)
- Kırmızı silme butonu görünür
- Otomatik olarak silinir ve SnackBar gösterilir
Yöntem 2: Detay Sayfasından
- Harcamaya tıklayın
- "Harcamayı Sil" butonuna basın
- Onay dialogunda "Evet" deyin
- Alt navigasyon bar'dan "Takvim" sekmesine geçin
- Takvimde harcama yapılan günler işaretli görünür
- Bir güne tıklayarak o günün harcamalarını görebilirsiniz
- Ok tuşları ile ay değiştirebilirsiniz
- Ana ekranda üst menü ikonuna (üç nokta) tıklayın
- "Limiti Güncelle" seçeneğine basın
- Yeni limit değerini girin
- "Limiti Güncelle" ile onaylayın
- Ay sonuna geldiğinizde üst menüden "Dönemi Kaydet" görünür
- Bu butona tıklayın
- (Opsiyonel) Özel bir isim verin (örn: "Ocak 2026 - Tatil Ayı")
- "Onayla" ile kaydedin
- Harcamalarınız otomatik olarak Geçmiş sekmesine taşınır
- Yeni dönem için limit belirleme ekranı açılır
- Alt navigasyondan "Geçmiş" sekmesine geçin
- Tüm arşivlenmiş dönemleriniz listelenir
- Bir döneme tıklayın
- Dönem detay sayfası açılır:
- Limit ve toplam harcama
- Tüm harcama listesi
- Salt okunur mod (düzenleme yapılamaz)
- Herhangi bir ekranda sol üst menü ikonuna tıklayın (drawer açılır)
- "Görünüm Ayarları" seçeneğine basın
- Tercih ettiğiniz temayı seçin:
- Açık Mod
- Koyu Mod
- Sistem Ayarı
- Tema anında değişir
- Drawer'dan "Yazı Boyutu" seçeneğine basın
- Slider'ı hareket ettirerek boyutu ayarlayın
- Canlı önizlemeyi görebilirsiniz
- "Varsayılana Dön" ile %100'e dönebilirsiniz
- Değişiklik tüm ekranlara yansır
- Drawer → "Tüm Verileri Temizle" (kırmızı)
- Onay dialogu açılır
- Uyarıyı okuyun!
- "Hepsini Sil" butonuna basın
- Tüm dönemler ve harcamalar silinir
- Uygulama başlangıç durumuna döner
Uygulama, Clean Architecture prensiplerine göre katmanlara ayrılmıştır:
┌─────────────────────────────────────────┐
│ Presentation Layer │
│ (Widgets, Screens, BlocBuilders) │
└────────────┬────────────────────────────┘
│
┌────────────▼────────────────────────────┐
│ Business Logic Layer │
│ (BLoC, Cubit, Events, States) │
└────────────┬────────────────────────────┘
│
┌────────────▼────────────────────────────┐
│ Data Layer │
│ (Repository, Models, Hive Adapters) │
└─────────────────────────────────────────┘
State Akışı:
User Action (UI Event)
↓
Event Dispatched to BLoC
↓
BLoC Processes Event
↓
Repository Called (if needed)
↓
New State Emitted
↓
BlocBuilder/BlocListener Reacts
↓
UI Updated
Veri erişimi için Repository Pattern kullanılır:
// Soyutlama: UI, veri kaynağını bilmez (Hive, SQLite, API)
HiveRepository
├── getExpensesForMonth()
├── addExpense()
├── updateExpense()
├── deleteExpense()
├── saveMonth()
└── getArchivedMonths()Proje yapısı feature'lara göre organize edilmiştir:
features/
├── expense/ # Harcama ile ilgili her şey
├── calendar/ # Takvim ile ilgili her şey
├── history/ # Geçmiş ile ilgili her şey
└── onboarding/ # Onboarding ile ilgili her şey
Bu proje MIT Lisansı altında lisanslanmıştır.









