# yixun06/smart-pocket architecture

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

- Interactive diagram: https://gitdiagram.com/yixun06/smart-pocket
- Repository: https://github.com/yixun06/smart-pocket

## Overview

Smart Pocket is a Flutter personal-finance app. Users manage accounts and transactions, organize categories and budgets, plan recurring transactions, enter transactions quickly with shortcuts, and review analytics with PDF export; settings include themes. The tree shows presentation, controller, and data-service layers, while the README documents Firebase Authentication and Cloud Firestore. Dart implementation excerpts were not provided, so the graph preserves the documented capabilities but omits unverified page-to-controller and service-to-backend call paths.

Main entry points: [`lib/main.dart`](https://github.com/yixun06/smart-pocket/blob/main/lib/main.dart) (App entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Finance interface"]
  node_accounts["Accounts<br/>[accounts_page.dart]"]
  node_transactions["Transactions"]
  node_add_transaction["Quick entry"]
  node_categories["Categories<br/>[category_page.dart]"]
  node_budgets["Budgets<br/>[budget_page.dart]"]
  node_recurring["Recurring plans"]
  node_shortcuts["Shortcuts<br/>[shortcut_page.dart]"]
  node_analytics["Analytics<br/>[stats_page.dart]"]
  node_settings["Settings<br/>[settings_page.dart]"]
end

subgraph group_application["Application state"]
  node_auth_controller["Authentication"]
  node_transaction_controller["Transaction state"]
  node_budget_controller["Budget state"]
  node_analytics_controller["Analytics state"]
end

subgraph group_data["Data services"]
  node_auth_service["Auth service<br/>[auth_service.dart]"]
  node_transaction_service["Transaction service"]
  node_budget_service["Budget service"]
  node_pdf_service["PDF export<br/>[pdf_service.dart]"]
end

subgraph group_integrations["External services"]
  node_firebase_auth{{"Firebase Auth"}}
  node_firestore[("Cloud Firestore")]
end

node_user(("Finance user"))
node_runtime["App entry<br/>[main.dart]"]

node_user -->|"uses"| node_runtime
node_runtime -->|"uses"| node_firebase_auth
node_runtime -->|"uses"| node_firestore

click node_runtime "https://github.com/yixun06/smart-pocket/blob/main/lib/main.dart"
click node_accounts "https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/account/accounts_page.dart"
click node_transactions "https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/transaction/transaction_page.dart"
click node_add_transaction "https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/transaction/add_transaction_page.dart"
click node_categories "https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/category/category_page.dart"
click node_budgets "https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/budget/budget_page.dart"
click node_recurring "https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/recurring/recurring_page.dart"
click node_shortcuts "https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/shortcut/shortcut_page.dart"
click node_analytics "https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/stats/stats_page.dart"
click node_settings "https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/settings/settings_page.dart"
click node_auth_controller "https://github.com/yixun06/smart-pocket/blob/main/lib/application/controllers/authentication_controller.dart"
click node_transaction_controller "https://github.com/yixun06/smart-pocket/blob/main/lib/application/controllers/transaction_controller.dart"
click node_budget_controller "https://github.com/yixun06/smart-pocket/blob/main/lib/application/controllers/budget_controller.dart"
click node_analytics_controller "https://github.com/yixun06/smart-pocket/blob/main/lib/application/controllers/analytics_controller.dart"
click node_auth_service "https://github.com/yixun06/smart-pocket/blob/main/lib/data/services/auth_service.dart"
click node_transaction_service "https://github.com/yixun06/smart-pocket/blob/main/lib/data/services/transaction_service.dart"
click node_budget_service "https://github.com/yixun06/smart-pocket/blob/main/lib/data/services/budget_service.dart"
click node_pdf_service "https://github.com/yixun06/smart-pocket/blob/main/lib/data/services/pdf_service.dart"

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_accounts,node_transactions,node_add_transaction,node_categories,node_budgets,node_recurring,node_shortcuts,node_analytics,node_settings,node_user toneBlue
class node_auth_controller,node_transaction_controller,node_budget_controller,node_analytics_controller toneAmber
class node_auth_service,node_transaction_service,node_budget_service,node_pdf_service toneMint
class node_firebase_auth,node_firestore toneRose
class node_runtime toneTeal
```

## Components

### Finance interface

- [Accounts](https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/account/accounts_page.dart): `lib/presentation/views/account/accounts_page.dart`
- [Transactions](https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/transaction/transaction_page.dart): `lib/presentation/views/transaction/transaction_page.dart`
- [Quick entry](https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/transaction/add_transaction_page.dart): `lib/presentation/views/transaction/add_transaction_page.dart`
- [Categories](https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/category/category_page.dart): `lib/presentation/views/category/category_page.dart`
- [Budgets](https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/budget/budget_page.dart): `lib/presentation/views/budget/budget_page.dart`
- [Recurring plans](https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/recurring/recurring_page.dart): `lib/presentation/views/recurring/recurring_page.dart`
- [Shortcuts](https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/shortcut/shortcut_page.dart): `lib/presentation/views/shortcut/shortcut_page.dart`
- [Analytics](https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/stats/stats_page.dart): `lib/presentation/views/stats/stats_page.dart`
- [Settings](https://github.com/yixun06/smart-pocket/blob/main/lib/presentation/views/settings/settings_page.dart): `lib/presentation/views/settings/settings_page.dart`

### Application state

- [Authentication](https://github.com/yixun06/smart-pocket/blob/main/lib/application/controllers/authentication_controller.dart): `lib/application/controllers/authentication_controller.dart`
- [Transaction state](https://github.com/yixun06/smart-pocket/blob/main/lib/application/controllers/transaction_controller.dart): `lib/application/controllers/transaction_controller.dart`
- [Budget state](https://github.com/yixun06/smart-pocket/blob/main/lib/application/controllers/budget_controller.dart): `lib/application/controllers/budget_controller.dart`
- [Analytics state](https://github.com/yixun06/smart-pocket/blob/main/lib/application/controllers/analytics_controller.dart): `lib/application/controllers/analytics_controller.dart`

### Data services

- [Auth service](https://github.com/yixun06/smart-pocket/blob/main/lib/data/services/auth_service.dart): `lib/data/services/auth_service.dart`
- [Transaction service](https://github.com/yixun06/smart-pocket/blob/main/lib/data/services/transaction_service.dart): `lib/data/services/transaction_service.dart`
- [Budget service](https://github.com/yixun06/smart-pocket/blob/main/lib/data/services/budget_service.dart): `lib/data/services/budget_service.dart`
- [PDF export](https://github.com/yixun06/smart-pocket/blob/main/lib/data/services/pdf_service.dart): `lib/data/services/pdf_service.dart`

### External services

- **Firebase Auth**
- **Cloud Firestore**

### Other components

- **Finance user**
- [App entry](https://github.com/yixun06/smart-pocket/blob/main/lib/main.dart): `lib/main.dart`

## Connections

- Finance user → App entry: uses
- App entry → Firebase Auth: uses
- App entry → Cloud Firestore: uses
