A privacy-first expense tracking app for India with automatic transaction capture from UPI apps, bank notifications, and receipt scanning.
Every month, people struggle to track where their money goes. Transactions are scattered across UPI apps (Google Pay, PhonePe, PayTM), credit/debit cards, digital wallets, and subscriptions. There's no single, simple view of everyday expenses in plain language.
That's why I built SpendWise β to solve this exact problem.
I started by researching why expense tracking is so hard. The main issues I identified:
- Fragmentation β Transactions live across 10+ apps
- Friction β Manual entry takes 30+ seconds per transaction
- Invisibility β One-tap payments make spending feel "invisible"
- Confusion β Bank statements show cryptic codes, not real merchant names
I chose a privacy-first approach β all data stays on the device. No cloud, no accounts, no sync.
Transaction Happens
β
ββββββ΄ββββββ
β β
Notification Photo Capture
Listener (Receipt OCR)
β β
ββββββ¬ββββββ
β
Data Fusion Engine
(Combine sources)
β
Auto-Categorization
β
User Confirmation
β
Store & Learn
After evaluating options, I selected:
- Flutter β Cross-platform, fast development
- Riverpod β Modern state management
- SQLite β Reliable local storage
- Google ML Kit β Free, on-device OCR
- fl_chart β Beautiful, customizable charts
Built a service to listen to Android notifications from bank apps. Used regex patterns to extract:
- Transaction amount
- Merchant name
- Date/time
- Bank name
Supported apps: Google Pay, PhonePe, PayTM, HDFC, SBI, ICICI, Axis, and 15+ more.
Integrated Google ML Kit for on-device text recognition. Built custom parsers to extract:
- Total amount (even from messy receipts)
- Merchant name
- Date
- Line items
Created 50+ keyword rules that auto-categorize transactions:
- "swiggy", "zomato", "dominos" β Food & Dining
- "uber", "ola", "metro" β Transport
- "amazon", "flipkart" β Shopping
The system learns from user corrections β if you change a category, it remembers.
Built an intuitive dashboard showing:
- Monthly spending total
- Category breakdown (pie chart)
- Recent transactions
- Month-over-month comparison
- 10 unit tests for notification parsing
- Manual testing across different Android versions
- UI polish for Material Design 3
- Dark mode support
- π± Automatic Transaction Capture - Captures transactions from bank apps and UPI notifications
- π§Ύ Receipt Scanning - Scan receipts with OCR to auto-extract amounts
- π·οΈ Smart Categorization - Automatically categorizes expenses
- π Visual Insights - Beautiful charts showing spending by category
- π Privacy First - All data stored locally on your device
- π Dark Mode - Easy on the eyes theme support
- Google Pay
- PhonePe
- PayTM
- Amazon Pay
- BHIM UPI
- SBI, HDFC, ICICI, Axis, Kotak, IDFC, and more
| Layer | Technology | Why |
|---|---|---|
| Framework | Flutter 3.24 | Fast, cross-platform |
| Language | Dart | Flutter's native language |
| State | Riverpod | Type-safe, testable |
| Database | SQLite | Reliable, local-only |
| OCR | Google ML Kit | Free, on-device |
| Charts | fl_chart | Beautiful visualizations |
| Architecture | Clean Architecture | Scalable, maintainable |
- Flutter SDK 3.x
- Android Studio / Android SDK
- Android device or emulator (API 24+)
- Clone the repository
git clone https://github.com/badalsharma9929/spendwise.git
cd spendwise- Get dependencies
flutter pub get- Run the app
flutter run# Debug build
flutter build apk --debug
# Release build
flutter build apk --releaselib/
βββ core/ # Constants, theme, utilities
βββ data/ # Database, models, repositories, services
βββ domain/ # Entities, repository interfaces
βββ presentation/ # Pages, widgets, providers, router
- iOS support
- Cloud backup (optional, with user consent)
- Budget alerts
- Recurring transaction detection
- Export to CSV/PDF
- Multi-currency support
- Investment tracking
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
Badal Sharma
- GitHub: @badalsharam9929
Give a β if this project helped you!