SpendX is a modern, privacy-friendly personal finance tracker designed for developers, creators, and individuals who want full ownership of their financial data. No subscriptions, no cloud lock-in, and no spreadsheet fatigue.
Features β’ Tech Stack β’ Architecture β’ Getting Started β’ Release Build
Most personal finance tools today require constant cloud syncing, force you into expensive monthly subscriptions, or compromise your privacy by linking directly to live bank accounts. When those services shut down or change their models, your history goes with them.
SpendX is built on a local-first philosophy. All transactional databases, settings, and credentials live directly on your physical device. It gives you the power of a comprehensive financial ledger, budgeting sheets, analytics, and intelligent imports without sacrificing your data privacy.
- Multi-Account Management: Track balances across cash, bank accounts, credit cards, loans, and lending arrangements.
- Granular Tracking: Organize transactions with categories, customizable tags, and advanced search/filters.
- Offline-First Storage: Powered by a local SQLite engine for instantaneous loads and zero-connection operation.
- Flexible Budgets: Set up category-based budgets to visualize monthly or periodic spending.
- Salary Planning Ledger: Integrated flows to allocate and plan salary distribution across goals and bills.
- Recurring Transactions: Automate recurring expense logging (subscriptions, utility bills) on a flexible timeline engine.
- Interactive Analytics: View spending breakdowns, category metrics, and tag distributions through native canvas charts.
- Net Worth History: Track your overall net worth over time with local database snapshots.
- Nudges & Health Nudges: Receive subtle behavioral triggers about your spending trends.
- Digital Statement Parser: Import records using bank-agnostic statement template mappings.
- On-Device OCR Receipt Scanning: Scan physical receipts using Google ML Kit to extract transaction details on-device.
- SMS Intent Handler: Optionally parse transaction messages locally to speed up entry.
SpendX uses modern mobile components to ensure high performance and maintainability:
- Framework: Flutter (Dart)
- State Management: Riverpod & Provider for reactive state updates
- Local Storage: sqflite (SQLite for Android & iOS)
- ML Engines: Google ML Kit Text Recognition (local, on-device OCR)
- CI/CD: GitHub Actions workflow automatically verifying linting, formatting, and unit tests
SpendX follows a modular, feature-first structure with clean separation of layers:
lib/
βββ core/ # App configuration, logging, and global utilities
βββ data/ # Local database schemas, migrations, and shared repositories
βββ features/ # Feature modules (salary ledger, transactions, budget) with scoped state
βββ models/ # Scoped serialization and domain models
βββ screens/ # Core app screen structures and layout routes
βββ services/ # Business logic, SMS parsing, and file import engines
βββ shared/ # Reusable global UI elements and layout rules
βββ widgets/ # Core components and modular visual cards
Detailed documentation:
- π Architecture Specifications
- π‘ Design Decisions & Tradeoffs
- πΊοΈ Development Roadmap
- Flutter SDK (
3.10.0or higher) - Android Studio, VS Code, or Xcode (for iOS compilation)
- CocoaPods (if compiling on macOS for iOS)
-
Clone the repository:
git clone https://github.com/masheddesigns/SpendX.git cd SpendX -
Install Flutter packages:
flutter pub get
-
Configure Environment Variables:
cp .env.example .env
-
Launch the application:
flutter run
To generate a release APK locally:
flutter build apk --releaseExpected output:
build/app/outputs/flutter-apk/app-release.apk
Since SpendX operates entirely local-first, no personal financial data is ever sent to any remote server.
- SMS parsing is executed on-device using local string patterns.
- Receipt text extraction runs on-device using Google's local ML Kit OCR library.
- Backup and export features generate files locally to place control strictly in your hands.
Review our full security policy in SECURITY.md.
We welcome contributions! Please review the setup rules, testing workflows, and branching patterns in CONTRIBUTING.md before opening a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.