๐ฌ๐ง English | ๐ฎ๐ฉ Bahasa Indonesia
A secure, offline-first personal finance management application built with Flutter, designed for multi-account tracking, budget planning, and privacy-focused data ownership.
Most modern money-tracking applications mandate active internet connectivity, third-party user account registration, or store your financial records on remote cloud servers. Money Manager takes a privacy-first approach:
- 100% Offline-First Architecture: Powered by a local SQLite database (Drift), all your cash flows, account balances, and personal records remain strictly on your physical device.
- Strong Encryption & Privacy: Support for local AES-256-GCM + HMAC-SHA256 password encryption ensures your exports and backups are tamper-proof and inaccessible without your master password.
- Own Your Data (Direct Google Drive Backup): When you choose to sync your data to the cloud, backup files are uploaded directly to your own personal Google Drive
appDataFolder. No middleman servers, no third-party database tracking, and zero subscription traps.
All features listed below are fully implemented across application layers and presentation screens:
-
๐ณ Multi-Account & Wallet Management (
lib/features/accounts) Manage multiple cash, bank, and e-wallet accounts with customized currencies, typed icons, balance recalculation, and sort orders. -
๐ธ Transactions & Inter-Account Transfers (
lib/features/transactions,lib/features/transfers) Log income and expense transactions with search, date-range filtering, and daily groupings. Seamlessly execute transfers between accounts. -
๐ Budgeting & Savings Goals (
lib/features/budgets,lib/features/goals) Set category-specific monthly spending limits with real-time visual progress indicators. Create savings goals with priority tags and direct balance deposits. -
๐งพ Debt & Installment Tracking (
lib/features/debts) Track money owed to or by you, complete with due dates, installment counts, billing days, and full payment history logs. -
๐ Recurring Transactions (
lib/features/recurring) Configure daily, weekly, monthly, or yearly recurring payments and scheduled bills with automated local reminders. -
๐ฑ Multi-Currency & Exchange Rates (
lib/features/currencies) Supports transactions and accounts in different currencies, featuring an exchange rate registry for multi-currency conversion. -
๐ Statistics & Interactive Calendar (
lib/features/statistics,lib/features/calendar) Analyze monthly income vs. expense breakdowns by category and view daily spending dots on an interactive calendar grid. -
๐ Notes & Financial Memos (
lib/features/notes) Keep lightweight financial notes and memos integrated alongside your overall financial tracking. -
๐ App Security & Biometric Lock (
lib/features/security) Protect sensitive financial data using a salted SHA-256 PIN hash with anti-bruteforce lockout, biometric authentication (Fingerprint / Face ID vialocal_auth), and automatic session locking. -
โ๏ธ Local Backup & Encrypted Google Drive Sync (
lib/features/backup,lib/features/settings) Export and import Gzipped JSON backups locally or upload directly to your personal Google DriveappDataFolderwith optional AES-256-GCM password encryption. -
๐ Bilingual Localization (
lib/l10n) Native support for English and Bahasa Indonesia via standardflutter_localizations(.arbtemplates). -
๐จ Adaptive Dark & Light Theme (
lib/theme) Custom-designed interface with light and dark mode palettes built for high contrast and readability.
| Layer | Technology |
|---|---|
| Framework | Flutter (SDK >=3.2.0 <4.0.0) / Dart |
| Database (ORM) | Drift (SQLite) with DAOs & Migration Strategies |
| State Management | Flutter Riverpod (^2.5.1) |
| Routing | GoRouter (^14.0.0) |
| Security & Auth | local_auth (Biometrics), encrypt (AES-256-GCM), crypto (HMAC-SHA256, SHA-256) |
| Cloud Backup | google_sign_in & http (Google Drive REST API v3 appDataFolder) |
| Notifications | flutter_local_notifications & timezone |
| Formatting & L10n | intl, flutter_localizations |
Money Manager follows a Feature-First Clean Architecture design pattern. Each domain module isolates its data, business logic, and presentation concerns:
graph TD
A[Presentation Layer] -- Consumes --> B[Riverpod Providers]
B -- Calls --> C[Repositories]
C -- Queries --> D[Drift DAOs]
D -- Reads/Writes --> E[(Local SQLite)]
lib/
โโโ core/ # Shared utilities, crypto (AES-256/HMAC), constants & reusable UI widgets
โโโ database/ # Drift database configuration, tables, DAOs & migrations
โ โโโ daos/ # Data Access Objects (AccountsDao, TransactionsDao, etc.)
โ โโโ tables/ # Drift SQLite table schemas (accounts, budgets, debts, etc.)
โโโ data/ # Repository implementations wrapping Drift DAOs
โโโ domain/ # Pure Dart business entities, contracts & services
โโโ features/ # Feature modules (Feature-First architecture)
โ โโโ accounts/ # Account & wallet management
โ โโโ backup/ # Data backup & restore handlers
โ โโโ budgets/ # Category budget limits
โ โโโ calendar/ # Interactive transaction grid
โ โโโ categories/ # Income & expense categories
โ โโโ currencies/ # Exchange rate management
โ โโโ dashboard/ # Financial summary dashboard
โ โโโ debts/ # Debt & installment management
โ โโโ goals/ # Savings target tracking
โ โโโ notes/ # Quick financial notes
โ โโโ recurring/ # Recurring schedule manager
โ โโโ security/ # PIN & Biometric session lock
โ โโโ settings/ # App settings & Google Drive integration
โ โโโ statistics/ # Analytics & charts
โ โโโ transactions/ # Income/Expense transaction logging
โ โโโ transfers/ # Inter-account transfer logging
โโโ l10n/ # Localization templates (app_en.arb, app_id.arb)
โโโ theme/ # App color palettes & typography definitions
- Flutter SDK (
>= 3.2.0) - Dart SDK (
>= 3.2.0 < 4.0.0) - Android Studio / VS Code with Flutter extensions
- Android device or emulator (for mobile testing) / Windows C++ Build Tools (for desktop build)
-
Clone the repository:
git clone https://github.com/Eliasilyz/Money-Manager.git cd "Money Manager"
-
Install dependencies:
flutter pub get
-
Generate database code & localizations:
dart run build_runner build --delete-conflicting-outputs
-
Run the application:
flutter run
โน๏ธ Google Drive Backup Note: If building for Android with Google Drive integration, ensure your
android/app/google-services.jsonfile is correctly configured with your Google Cloud Console OAuth 2.0 Client ID and SHA-1 fingerprint.
The repository maintains an extensive automated test suite covering core database operations, encryption routines, service providers, and UI screen matrices:
# Run all unit and widget tests
flutter test
# Run specific unit test suites
flutter test test/unit/database_test.dart
flutter test test/unit/crypto_utils_test.dart
flutter test test/unit/backup_service_test.dart
# Run full UI screen matrix test
flutter test test/ui/screen_matrix_test.dartAdding a new language or updating translation strings is straightforward:
- Open
lib/l10n/app_en.arborlib/l10n/app_id.arb. - Add your localized key-value pairs following ARB format guidelines.
- Run code generation:
flutter gen-l10n
- Automated Schedule Execution: Automatic transaction generation on app startup when recurring schedules reach due date.
- Enhanced Base Currency Conversion: Automatic multi-currency net balance aggregation on Dashboard using active exchange rates.
- Locale-Aware Default Categories: Automatic localization of seed categories matching device system language.
- Refined Bottom Sheet CRUD: Quick inline editing and deletion for Budgets and Savings Goals via modal bottom sheets.
Contributions are welcome! Please follow these guidelines:
- Fork the repository.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Ensure all static checks and tests pass (
flutter analyze && flutter test). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
Distributed under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE for details.


