# fadiabdeljawwad/fintrack-ai architecture

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

- Interactive diagram: https://gitdiagram.com/fadiabdeljawwad/fintrack-ai
- Repository: https://github.com/fadiabdeljawwad/fintrack-ai

## Overview

FinTrack AI is a Flutter personal-finance app. Its main user workflow is securing an account, entering or capturing a transaction (including voice/AI-assisted entry), organizing it, and reviewing financial activity. The graph also retains documented currency conversion, dashboard analytics, receipt analysis, and cloud synchronization. The README describes these capabilities, but the sampled source is primarily platform runner/plugin code; feature-level arrows therefore reflect documented relationships, not inspected Dart call sites. Budgeting and reports are documented, but the tree shows no distinct budget or reporting implementation.

Main entry points: [`lib/features/auth/presentation/screens/lock_screen.dart`](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/auth/presentation/screens/lock_screen.dart) (App lock), [`lib/features/transactions/presentation/screens/voice_entry_screen.dart`](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/screens/voice_entry_screen.dart) (Voice entry), [`lib/features/transactions/presentation/state/transaction_controller.dart`](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/state/transaction_controller.dart) (Transaction controller), [`lib/features/auth/presentation/screens/login_screen.dart`](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/auth/presentation/screens/login_screen.dart) (Sign-in & onboarding)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access &amp; Security"]
  node_authui["Sign-in &amp; onboarding<br/>[login_screen.dart]"]
  node_authlogic["Authentication state"]
  node_authrepo["Auth repository"]
  node_lock["App lock<br/>[lock_screen.dart]"]
end

subgraph group_money["Transactions &amp; Currency"]
  node_txui["Transaction screens"]
  node_voiceui["Voice entry"]
  node_speech["Speech recognition"]
  node_txlogic["Transaction controller"]
  node_txmodel["Transaction model"]
  node_txrepo["Transaction repository"]
  node_txremote["Transaction data source"]
  node_parse["AI transaction parsing"]
  node_currency["Currency conversion"]
  node_currencyui["Currency selection"]
  node_wallet["Wallet management"]
  node_receipt["Receipt capture"]
end

subgraph group_insights["Financial Overview"]
  node_dashboard["Dashboard &amp; analytics<br/>[home_screen.dart]"]
end

subgraph group_platform["Shared Services"]
  node_firebaseauth["Firebase Auth"]
  node_biometric["Biometric service"]
  node_firestore[("Cloud Firestore")]
  node_gemini["Gemini service"]
  node_storage["Secure local storage"]
  node_firebase_storage["Firebase Storage"]
end

node_user(("Finance user"))

node_user -->|"signs in"| node_authui
node_authui -->|"submits credentials"| node_authlogic
node_authlogic -->|"authenticates"| node_authrepo
node_authrepo -->|"uses identity"| node_firebaseauth
node_user -->|"unlocks app"| node_lock
node_lock -->|"checks biometrics"| node_biometric
node_user -->|"manages transactions"| node_txui
node_user -->|"dictates expense"| node_voiceui
node_voiceui -->|"captures speech"| node_speech
node_txui -->|"manages entries"| node_txlogic
node_txlogic -->|"tracks transactions"| node_txmodel
node_txlogic -->|"persists transactions"| node_txrepo
node_txrepo -->|"uses data source"| node_txremote
node_txremote -->|"syncs records"| node_firestore
node_voiceui -->|"interprets entry"| node_parse
node_parse -->|"requests analysis"| node_gemini
node_user -->|"chooses currency"| node_currencyui
node_currencyui -->|"converts amounts"| node_currency
node_user -->|"reviews finances"| node_dashboard
node_dashboard -->|"reads activity"| node_firestore
node_user -.->|"organizes finances"| node_wallet
node_user -->|"scans receipt"| node_receipt
node_receipt -->|"stores documents"| node_firebase_storage
node_lock -->|"protects local data"| node_storage

click node_authui "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/auth/presentation/screens/login_screen.dart"
click node_authlogic "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/auth/presentation/state/auth_controller.dart"
click node_authrepo "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/auth/data/repositories/auth_repository_impl.dart"
click node_lock "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/auth/presentation/screens/lock_screen.dart"
click node_biometric "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/core/services/biometric_service.dart"
click node_txui "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/screens/transactions_screen.dart"
click node_voiceui "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/screens/voice_entry_screen.dart"
click node_speech "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/state/use_speech_recognition.dart"
click node_txlogic "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/state/transaction_controller.dart"
click node_txmodel "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/domain/models/transaction_model.dart"
click node_txrepo "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/data/repositories/firestore_transaction_repository.dart"
click node_txremote "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/data/datasources/tx_remote_datasource.dart"
click node_parse "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/domain/usecases/parse_gemini_transaction_usecase.dart"
click node_gemini "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/core/services/gemini_service.dart"
click node_currency "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/currency/data/services/exchange_rate_service.dart"
click node_currencyui "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/currency/presentation/state/currency_controller.dart"
click node_dashboard "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/dashboard/presentation/screens/home_screen.dart"
click node_wallet "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/wallets/data/repositories/firestore_wallet_repository.dart"
click node_storage "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/core/services/secure_storage_service.dart"
click node_receipt "https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/screens/voice_entry_screen.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_authui,node_authlogic,node_authrepo,node_lock,node_user toneBlue
class node_txui,node_voiceui,node_speech,node_txlogic,node_txmodel,node_txrepo,node_txremote,node_parse,node_currency,node_currencyui,node_wallet,node_receipt toneAmber
class node_dashboard toneMint
class node_firebaseauth,node_biometric,node_firestore,node_gemini,node_storage,node_firebase_storage toneRose
```

## Components

### Access & Security

- [Sign-in & onboarding](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/auth/presentation/screens/login_screen.dart): `lib/features/auth/presentation/screens/login_screen.dart`
- [Authentication state](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/auth/presentation/state/auth_controller.dart): `lib/features/auth/presentation/state/auth_controller.dart`
- [Auth repository](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/auth/data/repositories/auth_repository_impl.dart): `lib/features/auth/data/repositories/auth_repository_impl.dart`
- [App lock](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/auth/presentation/screens/lock_screen.dart): `lib/features/auth/presentation/screens/lock_screen.dart`

### Transactions & Currency

- [Transaction screens](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/screens/transactions_screen.dart): `lib/features/transactions/presentation/screens/transactions_screen.dart`
- [Voice entry](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/screens/voice_entry_screen.dart): `lib/features/transactions/presentation/screens/voice_entry_screen.dart`
- [Speech recognition](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/state/use_speech_recognition.dart): `lib/features/transactions/presentation/state/use_speech_recognition.dart`
- [Transaction controller](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/state/transaction_controller.dart): `lib/features/transactions/presentation/state/transaction_controller.dart`
- [Transaction model](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/domain/models/transaction_model.dart): `lib/features/transactions/domain/models/transaction_model.dart`
- [Transaction repository](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/data/repositories/firestore_transaction_repository.dart): `lib/features/transactions/data/repositories/firestore_transaction_repository.dart`
- [Transaction data source](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/data/datasources/tx_remote_datasource.dart): `lib/features/transactions/data/datasources/tx_remote_datasource.dart`
- [AI transaction parsing](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/domain/usecases/parse_gemini_transaction_usecase.dart): `lib/features/transactions/domain/usecases/parse_gemini_transaction_usecase.dart`
- [Currency conversion](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/currency/data/services/exchange_rate_service.dart): `lib/features/currency/data/services/exchange_rate_service.dart`
- [Currency selection](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/currency/presentation/state/currency_controller.dart): `lib/features/currency/presentation/state/currency_controller.dart`
- [Wallet management](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/wallets/data/repositories/firestore_wallet_repository.dart): `lib/features/wallets/data/repositories/firestore_wallet_repository.dart`
- [Receipt capture](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/transactions/presentation/screens/voice_entry_screen.dart): `lib/features/transactions/presentation/screens/voice_entry_screen.dart`

### Financial Overview

- [Dashboard & analytics](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/features/dashboard/presentation/screens/home_screen.dart): `lib/features/dashboard/presentation/screens/home_screen.dart`

### Shared Services

- **Firebase Auth**
- [Biometric service](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/core/services/biometric_service.dart): `lib/core/services/biometric_service.dart`
- **Cloud Firestore**
- [Gemini service](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/core/services/gemini_service.dart): `lib/core/services/gemini_service.dart`
- [Secure local storage](https://github.com/fadiabdeljawwad/fintrack-ai/blob/main/lib/core/services/secure_storage_service.dart): `lib/core/services/secure_storage_service.dart`
- **Firebase Storage**

### Other components

- **Finance user**

## Connections

- Finance user → Sign-in & onboarding: signs in (evidence: `README.md`)
- Sign-in & onboarding → Authentication state: submits credentials (evidence: `README.md`)
- Authentication state → Auth repository: authenticates (evidence: `README.md`)
- Auth repository → Firebase Auth: uses identity (evidence: `README.md`)
- Finance user → App lock: unlocks app (evidence: `README.md`)
- App lock → Biometric service: checks biometrics (evidence: `README.md`)
- Finance user → Transaction screens: manages transactions (evidence: `README.md`)
- Finance user → Voice entry: dictates expense (evidence: `README.md`)
- Voice entry → Speech recognition: captures speech (evidence: `README.md`)
- Transaction screens → Transaction controller: manages entries (evidence: `README.md`)
- Transaction controller → Transaction model: tracks transactions (evidence: `README.md`)
- Transaction controller → Transaction repository: persists transactions (evidence: `README.md`)
- Transaction repository → Transaction data source: uses data source (evidence: `README.md`)
- Transaction data source → Cloud Firestore: syncs records (evidence: `README.md`)
- Voice entry → AI transaction parsing: interprets entry (evidence: `README.md`)
- AI transaction parsing → Gemini service: requests analysis (evidence: `README.md`)
- Finance user → Currency selection: chooses currency (evidence: `README.md`)
- Currency selection → Currency conversion: converts amounts (evidence: `README.md`)
- Finance user → Dashboard & analytics: reviews finances (evidence: `README.md`)
- Dashboard & analytics → Cloud Firestore: reads activity (evidence: `README.md`)
- Finance user → Wallet management: organizes finances
- Finance user → Receipt capture: scans receipt (evidence: `README.md`)
- Receipt capture → Firebase Storage: stores documents (evidence: `README.md`)
- App lock → Secure local storage: protects local data (evidence: `README.md`)
