Skip to content

aswin-blix/trackify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Trackify Logo

Trackify

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.

MIT License Flutter Dart CI PRs Welcome

Download APK Β· Landing Page Β· Report Bug Β· Request Feature


Features

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

Screenshots coming soon β€” contributions welcome!


Tech Stack

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

Getting Started

Prerequisites

  • Flutter SDK β‰₯ 3.0.0
  • Android SDK (for Android builds)
  • A physical or virtual Android device

Clone & Run

# 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 run

Build Release APK

flutter build apk --release --no-tree-shake-icons
# Output: build/app/outputs/flutter-apk/app-release.apk

Note: The --no-tree-shake-icons flag is required because category icons are stored as integer codepoints in Hive and resolved at runtime via IconData(codePoint, fontFamily: 'MaterialIcons').

Install on Device (ADB)

adb install build/app/outputs/flutter-apk/app-release.apk

Project Structure

lib/
β”œβ”€β”€ 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.)

Architecture Notes

  • Hive adapters are hand-written β€” the .g.dart files are checked in. Do not run build_runner.
  • Settings state β€” AppSettings is cloned via fromJson/toJson on 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/curve at the chart widget level.
  • Notifications β€” flutter_timezone is used to resolve the device's local timezone at runtime via FlutterTimezone.getLocalTimezone(). This must be called during NotificationService.init() before any zonedSchedule call, otherwise notifications fire at UTC time on many devices.
  • Week analytics β€” uses a rolling last-7-days window (today βˆ’ 6 to today), not a Mon–Sun calendar week, so data is always visible regardless of the day of the week.

Permissions (Android)

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.


Contributing

Contributions are very welcome! Please read CONTRIBUTING.md first.

  1. Fork the repo
  2. Create a branch: git checkout -b feat/your-feature
  3. Commit your changes
  4. Open a Pull Request

Roadmap

  • Recurring / scheduled transactions
  • CSV export
  • Widgets (home screen balance widget)
  • iOS support
  • UPI deep link detection
  • Multi-account support

License

Distributed under the MIT License. See LICENSE for details.


Made with ❀️ by Aswin Blix & Claude Code & Antigravity

About

πŸ’° Free, open-source personal finance tracker for Android. Track expenses & income, auto-read bank SMS, set budgets, visualize spending β€” 100% offline, zero data collection. Built with Flutter + Riverpod + Hive.

Resources

License

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors