Lumina Expense is a modern, lightweight, privacy-focused expense tracker and personal finance manager built with Flutter, Riverpod, and Drift (SQLite).
It is designed with an offline-first philosophy: zero cloud lock-in, zero trackers, zero account sign-up, and complete data ownership with one-tap JSON & CSV backup to Google Drive or local storage.
- 3-Tap Quick Entry: Fast numeric keypad with instant calculation for Expenses, Income, and Transfers.
- Custom Categories & Subcategories: Pre-seeded with 17+ essential categories with customizable icons and color coding.
- Multi-Account / Wallets: Track balances across multiple sources (Cash Wallet, Bank Accounts, Credit Cards, Savings).
- Account Transfers: Move funds between wallets with real-time balance calculations.
- One-Tap JSON Export: Export the entire database snapshot to a versioned
.jsonfile and trigger the native OS Share Sheet to save directly to Google Drive, iCloud, Files, or send via Email. - Spreadsheet CSV Export: Generate
.csvtransaction sheets compatible with Microsoft Excel and Google Sheets. - Safe Import with Validation: Preview summary counts (transactions, accounts, budgets) before restoring with overwrite confirmation.
- Demo Data Generator: One-click button in Settings to populate realistic sample data for instant exploration and testing.
-
Monthly Category Budgets: Set spending caps per category with visual progress bars and color warnings (Green
$\to$ Amber at 80%$\to$ Red at 100%). -
Interactive Donut Charts: Powered by
fl_chartfor visual category spending breakdown. - Net Worth & Monthly Flow: Live overview of Total Net Worth, Monthly Income, Expenses, and Net Savings.
- "They Owe Me" vs. "I Owe": Track money lent to friends or borrowed from colleagues.
- Partial & Full Settlements: Record repayments that automatically sync with balance summaries.
- Multiple Themes: Supports System Default, Light Theme, Slate Dark Theme, and Pure Pitch Black AMOLED Mode.
lib/
├── core/
│ ├── database/ # Drift (SQLite) schema tables & migrations
│ ├── providers/ # Global Riverpod database providers
│ ├── theme/ # Material 3 tokens, colors & themes
│ └── utils/ # Currency formatter, Date helpers, Icon mapper
├── features/
│ ├── dashboard/ # Net worth card, quick actions, recent transaction feed
│ ├── transactions/ # 3-Tap transaction modal, numeric keypad, CRUD repository
│ ├── accounts/ # Account & wallet management
│ ├── categories/ # Category repository & selectors
│ ├── budgets/ # Monthly category budgets & progress tracking
│ ├── analytics/ # Interactive fl_chart spending donut & monthly stats
│ ├── debts/ # IOU lending, borrowing & settlement manager
│ ├── backup/ # JSON/CSV export, file picker restore & demo seeder
│ └── settings/ # Theme switcher & data preferences
└── main.dart # Riverpod ProviderScope & Navigation shell
- Flutter SDK (3.x or higher)
- Dart SDK (3.x or higher)
- Android Studio / Xcode / VS Code
-
Clone the repository:
git clone https://github.com/your-username/lumina_expense.git cd lumina_expense -
Install dependencies:
flutter pub get
-
Generate Drift database code:
dart run build_runner build
-
Run the app on your connected device/emulator:
flutter run
Run all unit and widget tests:
flutter testRun static analysis:
dart analyze lib test- 100% Offline: No network requests, analytics, or external telemetry are made by the application.
- AI Agent & Local Rules Isolation: Local developer instructions and editor overrides (
.agent-rules/,.cursorrules,.gemini/) are strictly excluded from git tracking.
Prabin Chandra Shrestha (PC Shrestha)
- Portfolio & Blog: pcshrestha.com.np
- GitHub: @PrabinCode
- LinkedIn: in/pcshrestha
This project is licensed under the MIT License — see the LICENSE file for details.