Track every rupee, own your future.
A production-grade, 100% offline personal finance tracker built with Flutter. Beautiful glassmorphism UI Β· Riverpod state Β· Hive local database Β· Zero data collection.
Download APK Β· Landing Page Β· Report Bug Β· Request Feature
| Feature | Description | |
|---|---|---|
| π° | Transaction Tracking | Log income, expenses, and transfers with categories, notes, and tags |
| π | Analytics | Bar charts, pie charts, weekly/monthly/yearly breakdowns |
| π― | Budget Tracking | Set monthly budgets per category with live progress bars |
| π± | SMS Bank Reader | Auto-reads bank transaction SMS β 100% local, never uploaded |
| π | App Lock | Biometric / device PIN gate on open and on background resume |
| βοΈ | Backup & Restore | Export full data as JSON and restore from file |
| π | Dark / Light Mode | Instant theme switching, follows system preference |
| π± | Multi-Currency | INR, USD, EUR, GBP, JPY, AUD, CAD, SGD, AED |
| β¨ | Glassmorphism UI | Frosted glass cards with spring animations throughout |
| π« | 100% Offline | Zero network calls, zero telemetry, zero cloud |
Screenshots coming soon β contributions welcome!
| Layer | Technology |
|---|---|
| Framework | Flutter 3.x, Dart 3.x |
| State Management | flutter_riverpod (StateNotifierProvider) |
| Local Database | hive + hive_flutter (hand-written adapters, no build_runner) |
| Charts | fl_chart v0.68 |
| Animations | flutter_animate, animations |
| Typography | Google Fonts β Plus Jakarta Sans |
| Biometric Auth | local_auth |
| SMS Reading | flutter_sms_inbox |
| Notifications | flutter_local_notifications, flutter_timezone |
| Background Tasks | workmanager |
| File Operations | path_provider, share_plus, file_picker |
- Flutter SDK β₯ 3.0.0
- Android SDK (for Android builds)
- A physical or virtual Android device
# 1. Clone
git clone https://github.com/aswin-blix/trackify.git
cd trackify
# 2. Install dependencies
flutter pub get
# 3. Run on connected device
flutter runflutter build apk --release --no-tree-shake-icons
# Output: build/app/outputs/flutter-apk/app-release.apkNote: The
--no-tree-shake-iconsflag is required because category icons are stored as integer codepoints in Hive and resolved at runtime viaIconData(codePoint, fontFamily: 'MaterialIcons').
adb install build/app/outputs/flutter-apk/app-release.apklib/
βββ core/
β βββ constants/ # App-wide constants, currencies, default categories
β βββ theme/ # AppTheme, AppColors, gradients
β βββ utils/ # SmsParser, formatters
βββ data/
β βββ models/ # Hive models + hand-written .g.dart adapters
β βββ repositories/ # Thin Hive box wrappers
βββ features/ # One folder per screen/feature
β βββ analytics/
β βββ app_lock/
β βββ backup/
β βββ budget/
β βββ dashboard/
β βββ onboarding/
β βββ settings/
β βββ sms/
β βββ splash/
β βββ tips/
β βββ transactions/
βββ shared/
βββ providers/ # All Riverpod providers (settings, transactions, categories, SMS)
βββ widgets/ # Reusable widgets (GlassCard, TransactionTile, etc.)
- Hive adapters are hand-written β the
.g.dartfiles are checked in. Do not runbuild_runner. - Settings state β
AppSettingsis cloned viafromJson/toJsonon every update so Riverpod detects the change. Mutation-in-place won't work. - Tab indices in
HomeShell:0=Dashboard,1=Transactions,2=FAB (opens sheet),3=Analytics,4=Settings. - fl_chart v0.68 β does not accept
duration/curveat the chart widget level. - Notifications β
flutter_timezoneis used to resolve the device's local timezone at runtime viaFlutterTimezone.getLocalTimezone(). This must be called duringNotificationService.init()before anyzonedSchedulecall, otherwise notifications fire at UTC time on many devices. - Week analytics β uses a rolling last-7-days window (
today β 6totoday), not a MonβSun calendar week, so data is always visible regardless of the day of the week.
| Permission | Why |
|---|---|
READ_SMS |
SMS Bank Reader β reads bank transaction messages locally |
USE_BIOMETRIC / USE_FINGERPRINT |
App Lock |
POST_NOTIFICATIONS |
Daily reminder notifications |
CAMERA / READ_MEDIA_IMAGES |
Profile avatar picker |
RECEIVE_BOOT_COMPLETED |
Reschedule notifications after reboot |
USE_FULL_SCREEN_INTENT |
Show heads-up notification display |
All permissions are optional. Core tracking works without any of them.
Contributions are very welcome! Please read CONTRIBUTING.md first.
- Fork the repo
- Create a branch:
git checkout -b feat/your-feature - Commit your changes
- Open a Pull Request
- Recurring / scheduled transactions
- CSV export
- Widgets (home screen balance widget)
- iOS support
- UPI deep link detection
- Multi-account support
Distributed under the MIT License. See LICENSE for details.