Skip to content

badalsharma9929/spendwise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SpendWise - Smart Expense Tracker

A privacy-first expense tracking app for India with automatic transaction capture from UPI apps, bank notifications, and receipt scanning.

The Problem πŸ’­

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.

How It Was Built πŸ”¨

Phase 1: Understanding the 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

Phase 2: Architecture Design

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

Phase 3: Technology Selection

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

Phase 4: Feature Implementation

Notification Capture (The "Magic" Feature)

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.

Receipt Scanning (OCR)

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

Smart Categorization

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.

Dashboard & Visualization

Built an intuitive dashboard showing:

  • Monthly spending total
  • Category breakdown (pie chart)
  • Recent transactions
  • Month-over-month comparison

Phase 5: Testing & Polish

  • 10 unit tests for notification parsing
  • Manual testing across different Android versions
  • UI polish for Material Design 3
  • Dark mode support

Features

  • πŸ“± 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

Supported Apps

UPI Apps

  • Google Pay
  • PhonePe
  • PayTM
  • Amazon Pay
  • BHIM UPI

Banks

  • SBI, HDFC, ICICI, Axis, Kotak, IDFC, and more

Tech Stack

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

Getting Started

Prerequisites

  • Flutter SDK 3.x
  • Android Studio / Android SDK
  • Android device or emulator (API 24+)

Installation

  1. Clone the repository
git clone https://github.com/badalsharma9929/spendwise.git
cd spendwise
  1. Get dependencies
flutter pub get
  1. Run the app
flutter run

Building APK

# Debug build
flutter build apk --debug

# Release build
flutter build apk --release

Project Structure

lib/
β”œβ”€β”€ core/              # Constants, theme, utilities
β”œβ”€β”€ data/              # Database, models, repositories, services
β”œβ”€β”€ domain/            # Entities, repository interfaces
└── presentation/      # Pages, widgets, providers, router

Future Enhancements πŸš€

  • iOS support
  • Cloud backup (optional, with user consent)
  • Budget alerts
  • Recurring transaction detection
  • Export to CSV/PDF
  • Multi-currency support
  • Investment tracking

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License.

Author

Badal Sharma

Show your support

Give a ⭐ if this project helped you!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors