Skip to content

Latest commit

ย 

History

82 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ‡ฌ๐Ÿ‡ง English | ๐Ÿ‡ฎ๐Ÿ‡ฉ Bahasa Indonesia

Money Manager

A secure, offline-first personal finance management application built with Flutter, designed for multi-account tracking, budget planning, and privacy-focused data ownership.

Flutter Dart Platform Support License: AGPL v3


๐Ÿ’ก Why Money Manager? (Value Proposition)

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.

โœจ Key Features

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 via local_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 Drive appDataFolder with optional AES-256-GCM password encryption.

  • ๐ŸŒ Bilingual Localization (lib/l10n) Native support for English and Bahasa Indonesia via standard flutter_localizations (.arb templates).

  • ๐ŸŽจ Adaptive Dark & Light Theme (lib/theme) Custom-designed interface with light and dark mode palettes built for high contrast and readability.


๐Ÿ› ๏ธ Tech Stack

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

๐Ÿ—๏ธ Architecture

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)]
Loading

Folder Structure Overview

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

๐Ÿ“ท Tangkapan Layar

Dashboard Screen Transactions Screen Budgets Screen


๐Ÿš€ Getting Started

Prerequisites

  • 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)

Installation Steps

  1. Clone the repository:

    git clone https://github.com/Eliasilyz/Money-Manager.git
    cd "Money Manager"
  2. Install dependencies:

    flutter pub get
  3. Generate database code & localizations:

    dart run build_runner build --delete-conflicting-outputs
  4. Run the application:

    flutter run

โ„น๏ธ Google Drive Backup Note: If building for Android with Google Drive integration, ensure your android/app/google-services.json file is correctly configured with your Google Cloud Console OAuth 2.0 Client ID and SHA-1 fingerprint.


๐Ÿงช Running Tests

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.dart

๐ŸŒ Localization

Adding a new language or updating translation strings is straightforward:

  1. Open lib/l10n/app_en.arb or lib/l10n/app_id.arb.
  2. Add your localized key-value pairs following ARB format guidelines.
  3. Run code generation:
    flutter gen-l10n

๐Ÿ—บ๏ธ Roadmap

  • 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.

๐Ÿค Contributing

Contributions are welcome! Please follow these guidelines:

  1. Fork the repository.
  2. Create your feature branch (git checkout -b feature/AmazingFeature).
  3. Commit your changes (git commit -m 'Add some AmazingFeature').
  4. Ensure all static checks and tests pass (flutter analyze && flutter test).
  5. Push to the branch (git push origin feature/AmazingFeature).
  6. Open a Pull Request.

๐Ÿ“„ License

Distributed under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE for details.

About

A secure, offline-first personal finance management application built with Flutter, designed for multi-account tracking, budget planning, and privacy-focused data ownership.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages