# eccureuil/mon_argent_apk architecture

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

- Interactive diagram: https://gitdiagram.com/eccureuil/mon_argent_apk
- Repository: https://github.com/eccureuil/mon_argent_apk

## Overview

Mon Argent is a personal-finance app for tracking current-account wallets, savings, bills, categories, and monthly reports. The main user flow runs from sign-in or initial setup into the dashboard, where account and bill activity is reviewed and users can transfer money; dedicated screens manage transactions, savings, bills, and reports. The client calls an API and also keeps SQLite data for fallback reads, while the server exposes domain routes backed by a database. README capabilities are included where source excerpts were unavailable; uncertain wiring is omitted.

Main entry points: [`server/src/index.ts`](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/index.ts) (API router), [`services/api.ts`](https://github.com/eccureuil/mon_argent_apk/blob/main/services/api.ts) (API client), [`app/(tabs)/index.tsx`](https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/index.tsx) (Dashboard), [`hooks/useFactures.ts`](https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useFactures.ts) (Bill data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Mobile app"]
  node_authscreens["Sign-in and setup"]
  node_dashboard["Dashboard<br/>[index.tsx]"]
  node_session["Session state<br/>[useSession.tsx]"]
  node_userrepo["User repository<br/>[userRepository.ts]"]
  node_localdb[("Local SQLite<br/>[db.ts]")]
end

subgraph group_finance["Finance workflows"]
  node_currentscreen["Current account<br/>[courant.tsx]"]
  node_savingsscreen["Savings<br/>[epargne.tsx]"]
  node_billsscreen["Bills<br/>[factures.tsx]"]
  node_reportscreen["Reports<br/>[rapport.tsx]"]
  node_currentdata["Current-account data<br/>[useCourant.ts]"]
  node_savingsdata["Savings data<br/>[useEpargne.ts]"]
  node_billsdata["Bill data<br/>[useFactures.ts]"]
  node_reportdata["Report data<br/>[useRapport.ts]"]
end

subgraph group_account["Account and preferences"]
  node_categoryscreen["Categories<br/>[categories.tsx]"]
  node_settingsscreen["Settings<br/>[parametres.tsx]"]
  node_categorydata["Category data<br/>[useCategories.ts]"]
  node_prefsdata["Preferences<br/>[useParametres.ts]"]
  node_notifications["Notifications<br/>[notifications.ts]"]
end

subgraph group_backend["API backend"]
  node_api["API client<br/>[api.ts]"]
  node_server["API router<br/>[index.ts]"]
  node_authroute["Authentication routes<br/>[auth.ts]"]
  node_currentroute["Current-account routes<br/>[courant.ts]"]
  node_savingsroute["Savings routes<br/>[epargne.ts]"]
  node_billsroute["Bill routes<br/>[factures.ts]"]
  node_reportroute["Report routes<br/>[rapport.ts]"]
  node_categoryroute["Category routes<br/>[categories.ts]"]
  node_settingsroute["Settings routes<br/>[parametres.ts]"]
  node_setuproute["Initial setup route<br/>[initialSetup.ts]"]
  node_authmiddleware["Token authentication<br/>[auth.ts]"]
  node_serverdb[("Server database<br/>[pool.ts]")]
end

node_user(("User"))

node_user -->|"signs in"| node_authscreens
node_user -->|"reviews finances"| node_dashboard
node_authscreens -->|"updates session"| node_session
node_session -->|"authenticates"| node_userrepo
node_userrepo -->|"requests auth"| node_api
node_userrepo -->|"caches user"| node_localdb
node_dashboard -->|"loads accounts"| node_currentdata
node_dashboard -->|"loads savings"| node_savingsdata
node_dashboard -->|"loads bills"| node_billsdata
node_dashboard -->|"loads summary"| node_reportdata
node_dashboard -->|"sends transfer"| node_api
node_currentscreen -->|"manages transactions"| node_currentdata
node_savingsscreen -->|"manages deposits"| node_savingsdata
node_billsscreen -->|"manages bills"| node_billsdata
node_reportscreen -->|"loads analytics"| node_reportdata
node_categoryscreen -->|"manages categories"| node_categorydata
node_settingsscreen -->|"updates preferences"| node_prefsdata
node_billsdata -.->|"schedules reminders"| node_notifications
node_currentdata -->|"requests account data"| node_api
node_savingsdata -->|"requests savings data"| node_api
node_billsdata -->|"requests bill data"| node_api
node_reportdata -->|"requests reports"| node_api
node_categorydata -->|"requests categories"| node_api
node_prefsdata -->|"requests settings"| node_api
node_currentdata -->|"reads and caches"| node_localdb
node_billsdata -->|"reads and caches"| node_localdb
node_categorydata -->|"reads and caches"| node_localdb
node_reportdata -->|"fallback reads"| node_localdb
node_api -->|"sends requests"| node_server
node_server -->|"dispatches auth"| node_authroute
node_server -->|"dispatches accounts"| node_currentroute
node_server -->|"dispatches savings"| node_savingsroute
node_server -->|"dispatches bills"| node_billsroute
node_server -->|"dispatches reports"| node_reportroute
node_server -->|"dispatches categories"| node_categoryroute
node_server -->|"dispatches settings"| node_settingsroute
node_server -->|"dispatches setup"| node_setuproute
node_authroute -->|"protects routes"| node_authmiddleware
node_authroute -->|"queries users"| node_serverdb

click node_authscreens "https://github.com/eccureuil/mon_argent_apk/tree/main/app/(auth)"
click node_dashboard "https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/index.tsx"
click node_currentscreen "https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/courant.tsx"
click node_savingsscreen "https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/epargne.tsx"
click node_billsscreen "https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/factures.tsx"
click node_reportscreen "https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/rapport.tsx"
click node_categoryscreen "https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/categories.tsx"
click node_settingsscreen "https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/parametres.tsx"
click node_session "https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useSession.tsx"
click node_userrepo "https://github.com/eccureuil/mon_argent_apk/blob/main/database/userRepository.ts"
click node_currentdata "https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useCourant.ts"
click node_savingsdata "https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useEpargne.ts"
click node_billsdata "https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useFactures.ts"
click node_reportdata "https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useRapport.ts"
click node_categorydata "https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useCategories.ts"
click node_prefsdata "https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useParametres.ts"
click node_notifications "https://github.com/eccureuil/mon_argent_apk/blob/main/services/notifications.ts"
click node_api "https://github.com/eccureuil/mon_argent_apk/blob/main/services/api.ts"
click node_localdb "https://github.com/eccureuil/mon_argent_apk/blob/main/database/db.ts"
click node_server "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/index.ts"
click node_authroute "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/auth.ts"
click node_currentroute "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/courant.ts"
click node_savingsroute "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/epargne.ts"
click node_billsroute "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/factures.ts"
click node_reportroute "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/rapport.ts"
click node_categoryroute "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/categories.ts"
click node_settingsroute "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/parametres.ts"
click node_setuproute "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/initialSetup.ts"
click node_authmiddleware "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/middleware/auth.ts"
click node_serverdb "https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/db/pool.ts"

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_authscreens,node_dashboard,node_session,node_userrepo,node_localdb,node_user toneBlue
class node_currentscreen,node_savingsscreen,node_billsscreen,node_reportscreen,node_currentdata,node_savingsdata,node_billsdata,node_reportdata toneAmber
class node_categoryscreen,node_settingsscreen,node_categorydata,node_prefsdata,node_notifications toneMint
class node_api,node_server,node_authroute,node_currentroute,node_savingsroute,node_billsroute,node_reportroute,node_categoryroute,node_settingsroute,node_setuproute,node_authmiddleware,node_serverdb toneRose
```

## Components

### Mobile app

- [Sign-in and setup](https://github.com/eccureuil/mon_argent_apk/tree/main/app/(auth)): `app/(auth)`
- [Dashboard](https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/index.tsx): `app/(tabs)/index.tsx`
- [Session state](https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useSession.tsx): `hooks/useSession.tsx`
- [User repository](https://github.com/eccureuil/mon_argent_apk/blob/main/database/userRepository.ts): `database/userRepository.ts`
- [Local SQLite](https://github.com/eccureuil/mon_argent_apk/blob/main/database/db.ts): `database/db.ts`

### Finance workflows

- [Current account](https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/courant.tsx): `app/(tabs)/courant.tsx`
- [Savings](https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/epargne.tsx): `app/(tabs)/epargne.tsx`
- [Bills](https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/factures.tsx): `app/(tabs)/factures.tsx`
- [Reports](https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/rapport.tsx): `app/(tabs)/rapport.tsx`
- [Current-account data](https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useCourant.ts): `hooks/useCourant.ts`
- [Savings data](https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useEpargne.ts): `hooks/useEpargne.ts`
- [Bill data](https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useFactures.ts): `hooks/useFactures.ts`
- [Report data](https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useRapport.ts): `hooks/useRapport.ts`

### Account and preferences

- [Categories](https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/categories.tsx): `app/(tabs)/categories.tsx`
- [Settings](https://github.com/eccureuil/mon_argent_apk/blob/main/app/(tabs)/parametres.tsx): `app/(tabs)/parametres.tsx`
- [Category data](https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useCategories.ts): `hooks/useCategories.ts`
- [Preferences](https://github.com/eccureuil/mon_argent_apk/blob/main/hooks/useParametres.ts): `hooks/useParametres.ts`
- [Notifications](https://github.com/eccureuil/mon_argent_apk/blob/main/services/notifications.ts): `services/notifications.ts`

### API backend

- [API client](https://github.com/eccureuil/mon_argent_apk/blob/main/services/api.ts): `services/api.ts`
- [API router](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/index.ts): `server/src/index.ts`
- [Authentication routes](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/auth.ts): `server/src/routes/auth.ts`
- [Current-account routes](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/courant.ts): `server/src/routes/courant.ts`
- [Savings routes](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/epargne.ts): `server/src/routes/epargne.ts`
- [Bill routes](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/factures.ts): `server/src/routes/factures.ts`
- [Report routes](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/rapport.ts): `server/src/routes/rapport.ts`
- [Category routes](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/categories.ts): `server/src/routes/categories.ts`
- [Settings routes](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/parametres.ts): `server/src/routes/parametres.ts`
- [Initial setup route](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/routes/initialSetup.ts): `server/src/routes/initialSetup.ts`
- [Token authentication](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/middleware/auth.ts): `server/src/middleware/auth.ts`
- [Server database](https://github.com/eccureuil/mon_argent_apk/blob/main/server/src/db/pool.ts): `server/src/db/pool.ts`

### Other components

- **User**

## Connections

- User → Sign-in and setup: signs in
- User → Dashboard: reviews finances
- Sign-in and setup → Session state: updates session
- Session state → User repository: authenticates
- User repository → API client: requests auth
- User repository → Local SQLite: caches user
- Dashboard → Current-account data: loads accounts
- Dashboard → Savings data: loads savings
- Dashboard → Bill data: loads bills
- Dashboard → Report data: loads summary
- Dashboard → API client: sends transfer
- Current account → Current-account data: manages transactions
- Savings → Savings data: manages deposits
- Bills → Bill data: manages bills
- Reports → Report data: loads analytics
- Categories → Category data: manages categories
- Settings → Preferences: updates preferences
- Bill data → Notifications: schedules reminders
- Current-account data → API client: requests account data
- Savings data → API client: requests savings data
- Bill data → API client: requests bill data
- Report data → API client: requests reports
- Category data → API client: requests categories
- Preferences → API client: requests settings
- Current-account data → Local SQLite: reads and caches
- Bill data → Local SQLite: reads and caches
- Category data → Local SQLite: reads and caches
- Report data → Local SQLite: fallback reads
- API client → API router: sends requests
- API router → Authentication routes: dispatches auth
- API router → Current-account routes: dispatches accounts
- API router → Savings routes: dispatches savings
- API router → Bill routes: dispatches bills
- API router → Report routes: dispatches reports
- API router → Category routes: dispatches categories
- API router → Settings routes: dispatches settings
- API router → Initial setup route: dispatches setup
- Authentication routes → Token authentication: protects routes
- Authentication routes → Server database: queries users
