# eliasilyz/money-manager architecture

> Architecture diagram of the GitHub repository eliasilyz/money-manager, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/eliasilyz/money-manager
- Repository: https://github.com/eliasilyz/money-manager

## Overview

Money Manager is an offline-first personal finance app. A user records transactions or transfers through feature screens; Riverpod providers mediate application state, repositories implement domain contracts, and Drift DAOs persist records in local SQLite. The README also documents budgeting, goals, debts, recurring reminders, analytics, security, and encrypted local/Google Drive backup. The sampled source is primarily platform scaffolding, so detailed feature-to-service wiring is inferred only where the README explicitly describes the architecture; uncertain links are omitted.

Main entry points: [`lib/routing/router.dart`](https://github.com/eliasilyz/money-manager/blob/main/lib/routing/router.dart) (App routing), [`lib/data/repositories`](https://github.com/eliasilyz/money-manager/tree/main/lib/data/repositories) (Repositories), [`lib/features/settings/application/backup_service.dart`](https://github.com/eliasilyz/money-manager/blob/main/lib/features/settings/application/backup_service.dart) (Backup and restore), [`lib/features/transactions`](https://github.com/eliasilyz/money-manager/tree/main/lib/features/transactions) (Transactions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_transactions["Transactions"]
  node_transfers["Transfers"]
  node_router["App routing<br/>[router.dart]"]
end

subgraph group_finance["Finance features"]
  node_accounts["Accounts"]
  node_budgets_goals["Budgets and goals"]
  node_debts["Debts"]
  node_recurring["Recurring payments"]
  node_currencies["Currencies"]
  node_analytics["Dashboard and analytics"]
  node_calendar["Calendar"]
  node_notes["Financial notes"]
  node_categories["Categories"]
end

subgraph group_data["Domain and storage"]
  node_domain["Domain services"]
  node_repositories["Repositories"]
  node_daos["Drift DAOs"]
  node_database[("Local SQLite<br/>[database.dart]")]
end

subgraph group_support["Privacy and support"]
  node_security["App security"]
  node_crypto["Encryption utilities<br/>[crypto_utils.dart]"]
  node_backup["Backup and restore"]
  node_drive["Google Drive"]
  node_notifications["Local reminders"]
  node_l10n["Localization"]
  node_theme["Adaptive theme"]
end

node_user(("User"))

node_user -->|"opens app"| node_router
node_router -->|"routes to"| node_transactions
node_router -->|"routes to"| node_transfers
node_router -->|"routes to"| node_accounts
node_router -->|"routes to"| node_budgets_goals
node_router -->|"routes to"| node_debts
node_router -->|"routes to"| node_recurring
node_router -->|"routes to"| node_currencies
node_router -->|"routes to"| node_analytics
node_router -->|"routes to"| node_calendar
node_router -->|"routes to"| node_notes
node_router -->|"routes to"| node_categories
node_transactions -->|"uses services"| node_domain
node_transactions -->|"uses providers"| node_repositories
node_transfers -->|"uses providers"| node_repositories
node_accounts -->|"uses providers"| node_repositories
node_budgets_goals -->|"uses providers"| node_repositories
node_debts -->|"uses providers"| node_repositories
node_recurring -->|"uses providers"| node_repositories
node_currencies -->|"uses providers"| node_repositories
node_analytics -->|"uses providers"| node_repositories
node_calendar -->|"uses transactions"| node_repositories
node_notes -->|"uses providers"| node_repositories
node_categories -->|"uses providers"| node_repositories
node_repositories -->|"queries and writes"| node_daos
node_daos -->|"reads and writes"| node_database
node_backup -->|"backs up data"| node_database
node_backup -->|"encrypts exports"| node_crypto
node_backup -.->|"uploads backups"| node_drive
node_security -->|"hashes PIN"| node_crypto
node_recurring -->|"schedules reminders"| node_notifications

click node_transactions "https://github.com/eliasilyz/money-manager/tree/main/lib/features/transactions"
click node_transfers "https://github.com/eliasilyz/money-manager/tree/main/lib/features/transfers"
click node_router "https://github.com/eliasilyz/money-manager/blob/main/lib/routing/router.dart"
click node_accounts "https://github.com/eliasilyz/money-manager/tree/main/lib/features/accounts"
click node_budgets_goals "https://github.com/eliasilyz/money-manager/tree/main/lib/features/budgets"
click node_debts "https://github.com/eliasilyz/money-manager/tree/main/lib/features/debts"
click node_recurring "https://github.com/eliasilyz/money-manager/tree/main/lib/features/recurring"
click node_currencies "https://github.com/eliasilyz/money-manager/tree/main/lib/features/currencies"
click node_analytics "https://github.com/eliasilyz/money-manager/tree/main/lib/features/dashboard"
click node_calendar "https://github.com/eliasilyz/money-manager/tree/main/lib/features/calendar"
click node_notes "https://github.com/eliasilyz/money-manager/tree/main/lib/features/notes"
click node_categories "https://github.com/eliasilyz/money-manager/tree/main/lib/features/categories"
click node_domain "https://github.com/eliasilyz/money-manager/tree/main/lib/domain"
click node_repositories "https://github.com/eliasilyz/money-manager/tree/main/lib/data/repositories"
click node_daos "https://github.com/eliasilyz/money-manager/tree/main/lib/database/daos"
click node_database "https://github.com/eliasilyz/money-manager/blob/main/lib/database/database.dart"
click node_security "https://github.com/eliasilyz/money-manager/tree/main/lib/features/security"
click node_crypto "https://github.com/eliasilyz/money-manager/blob/main/lib/core/crypto/crypto_utils.dart"
click node_backup "https://github.com/eliasilyz/money-manager/blob/main/lib/features/settings/application/backup_service.dart"
click node_drive "https://github.com/eliasilyz/money-manager/blob/main/lib/features/settings/application/google_drive_service.dart"
click node_notifications "https://github.com/eliasilyz/money-manager/blob/main/lib/features/settings/application/notification_service.dart"
click node_l10n "https://github.com/eliasilyz/money-manager/tree/main/lib/l10n"
click node_theme "https://github.com/eliasilyz/money-manager/tree/main/lib/theme"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_transactions,node_transfers,node_router,node_user toneBlue
class node_accounts,node_budgets_goals,node_debts,node_recurring,node_currencies,node_analytics,node_calendar,node_notes,node_categories toneAmber
class node_domain,node_repositories,node_daos,node_database toneMint
class node_security,node_crypto,node_backup,node_drive,node_notifications,node_l10n,node_theme toneRose
```

## Components

### User experience

- [Transactions](https://github.com/eliasilyz/money-manager/tree/main/lib/features/transactions): `lib/features/transactions`
- [Transfers](https://github.com/eliasilyz/money-manager/tree/main/lib/features/transfers): `lib/features/transfers`
- [App routing](https://github.com/eliasilyz/money-manager/blob/main/lib/routing/router.dart): `lib/routing/router.dart`

### Finance features

- [Accounts](https://github.com/eliasilyz/money-manager/tree/main/lib/features/accounts): `lib/features/accounts`
- [Budgets and goals](https://github.com/eliasilyz/money-manager/tree/main/lib/features/budgets): `lib/features/budgets`
- [Debts](https://github.com/eliasilyz/money-manager/tree/main/lib/features/debts): `lib/features/debts`
- [Recurring payments](https://github.com/eliasilyz/money-manager/tree/main/lib/features/recurring): `lib/features/recurring`
- [Currencies](https://github.com/eliasilyz/money-manager/tree/main/lib/features/currencies): `lib/features/currencies`
- [Dashboard and analytics](https://github.com/eliasilyz/money-manager/tree/main/lib/features/dashboard): `lib/features/dashboard`
- [Calendar](https://github.com/eliasilyz/money-manager/tree/main/lib/features/calendar): `lib/features/calendar`
- [Financial notes](https://github.com/eliasilyz/money-manager/tree/main/lib/features/notes): `lib/features/notes`
- [Categories](https://github.com/eliasilyz/money-manager/tree/main/lib/features/categories): `lib/features/categories`

### Domain and storage

- [Domain services](https://github.com/eliasilyz/money-manager/tree/main/lib/domain): `lib/domain`
- [Repositories](https://github.com/eliasilyz/money-manager/tree/main/lib/data/repositories): `lib/data/repositories`
- [Drift DAOs](https://github.com/eliasilyz/money-manager/tree/main/lib/database/daos): `lib/database/daos`
- [Local SQLite](https://github.com/eliasilyz/money-manager/blob/main/lib/database/database.dart): `lib/database/database.dart`

### Privacy and support

- [App security](https://github.com/eliasilyz/money-manager/tree/main/lib/features/security): `lib/features/security`
- [Encryption utilities](https://github.com/eliasilyz/money-manager/blob/main/lib/core/crypto/crypto_utils.dart): `lib/core/crypto/crypto_utils.dart`
- [Backup and restore](https://github.com/eliasilyz/money-manager/blob/main/lib/features/settings/application/backup_service.dart): `lib/features/settings/application/backup_service.dart`
- [Google Drive](https://github.com/eliasilyz/money-manager/blob/main/lib/features/settings/application/google_drive_service.dart): `lib/features/settings/application/google_drive_service.dart`
- [Local reminders](https://github.com/eliasilyz/money-manager/blob/main/lib/features/settings/application/notification_service.dart): `lib/features/settings/application/notification_service.dart`
- [Localization](https://github.com/eliasilyz/money-manager/tree/main/lib/l10n): `lib/l10n`
- [Adaptive theme](https://github.com/eliasilyz/money-manager/tree/main/lib/theme): `lib/theme`

### Other components

- **User**

## Connections

- User → App routing: opens app
- App routing → Transactions: routes to
- App routing → Transfers: routes to
- App routing → Accounts: routes to
- App routing → Budgets and goals: routes to
- App routing → Debts: routes to
- App routing → Recurring payments: routes to
- App routing → Currencies: routes to
- App routing → Dashboard and analytics: routes to
- App routing → Calendar: routes to
- App routing → Financial notes: routes to
- App routing → Categories: routes to
- Transactions → Domain services: uses services
- Transactions → Repositories: uses providers
- Transfers → Repositories: uses providers
- Accounts → Repositories: uses providers
- Budgets and goals → Repositories: uses providers
- Debts → Repositories: uses providers
- Recurring payments → Repositories: uses providers
- Currencies → Repositories: uses providers
- Dashboard and analytics → Repositories: uses providers
- Calendar → Repositories: uses transactions
- Financial notes → Repositories: uses providers
- Categories → Repositories: uses providers
- Repositories → Drift DAOs: queries and writes
- Drift DAOs → Local SQLite: reads and writes
- Backup and restore → Local SQLite: backs up data
- Backup and restore → Encryption utilities: encrypts exports
- Backup and restore → Google Drive: uploads backups
- App security → Encryption utilities: hashes PIN
- Recurring payments → Local reminders: schedules reminders
