# mohana-575/ledgerline-safe-payments architecture

> Architecture diagram of the GitHub repository mohana-575/ledgerline-safe-payments, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mohana-575/ledgerline-safe-payments
- Repository: https://github.com/mohana-575/ledgerline-safe-payments

## Overview

LedgerLine is a role-based banking ledger application: people use the React app to authenticate and reach account, money-movement, statement, audit, and administration features; the FastAPI backend handles those operations against PostgreSQL. The clearest evidenced backend flow is API registration of route modules, with movement routes delegating ledger work. Ledger persistence and authentication are represented as separate internal layers. The frontend’s page components are present, but the sampled source does not establish their HTTP calls to the API, so those links are omitted.

Main entry points: [`backend/app/services/ledger.py`](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/services/ledger.py) (Ledger service), [`backend/app/main.py`](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/main.py) (API application), [`frontend/src/App.tsx`](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/App.tsx) (Route shell), [`backend/app/api/routes/auth.py`](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/auth.py) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["Route shell<br/>[App.tsx]"]
  node_authpages["Auth pages<br/>[AuthPages.tsx]"]
  node_pages["Banking pages<br/>[AppPages.tsx]"]
  node_authprovider["Auth provider<br/>[AuthProvider.tsx]"]
  node_authcontext["Auth context<br/>[authContext.ts]"]
  node_authhook["Auth hook<br/>[useAuth.ts]"]
  node_guards["Role guards<br/>[RouteGuards.tsx]"]
  node_moneyform["Money form<br/>[MoneyForm.tsx]"]
end

subgraph group_api["API and access"]
  node_main["API application<br/>[main.py]"]
  node_authroutes["Authentication<br/>[auth.py]"]
  node_accounts["Accounts<br/>[accounts.py]"]
  node_admin["Administration<br/>[admin.py]"]
  node_movements["Money movements<br/>[movements.py]"]
  node_statements["Statements and audit<br/>[statements.py]"]
  node_dependencies["Auth dependencies<br/>[dependencies.py]"]
  node_security["Token security<br/>[security.py]"]
end

subgraph group_ledger["Ledger domain"]
  node_ledger["Ledger service<br/>[ledger.py]"]
  node_verify["Ledger verification<br/>[verify.py]"]
end

subgraph group_storage["Persistence"]
  node_dbsession["DB sessions<br/>[session.py]"]
  node_accountsmodel["Account records<br/>[account.py]"]
  node_membership["Account membership<br/>[account_member.py]"]
  node_ledgerentry["Ledger entries<br/>[ledger_entry.py]"]
  node_transaction["Transactions<br/>[transaction.py]"]
  node_auditlog["Audit records<br/>[audit_log.py]"]
  node_userrecord["User records<br/>[user.py]"]
end

node_person(("User"))
node_postgres[("PostgreSQL")]

node_person -->|"uses"| node_app
node_app -->|"routes to"| node_authpages
node_app -->|"routes to"| node_pages
node_app -->|"wraps"| node_authprovider
node_app -->|"protects routes"| node_guards
node_authprovider -->|"provides"| node_authcontext
node_authhook -->|"reads"| node_authcontext
node_guards -->|"checks user"| node_authhook
node_pages -->|"renders"| node_moneyform
node_main -->|"registers"| node_authroutes
node_main -->|"registers"| node_accounts
node_main -->|"registers"| node_admin
node_main -->|"registers"| node_movements
node_main -->|"registers"| node_statements
node_authroutes -->|"uses"| node_security
node_authroutes -->|"writes"| node_auditlog
node_authroutes -->|"reads and writes"| node_userrecord
node_dependencies -->|"decodes token"| node_security
node_dependencies -->|"loads user"| node_userrecord
node_movements -->|"delegates"| node_ledger
node_admin -->|"uses"| node_ledger
node_admin -->|"uses"| node_verify
node_ledger -->|"updates"| node_accountsmodel
node_ledger -->|"checks access"| node_membership
node_ledger -->|"creates entries"| node_ledgerentry
node_ledger -->|"records movement"| node_transaction
node_ledger -->|"records action"| node_auditlog
node_dbsession -->|"connects"| node_postgres
node_authroutes -->|"opens session"| node_dbsession
node_movements -->|"opens session"| node_dbsession
node_statements -->|"opens session"| node_dbsession

click node_app "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/App.tsx"
click node_authpages "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/pages/AuthPages.tsx"
click node_pages "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/pages/AppPages.tsx"
click node_authprovider "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/auth/AuthProvider.tsx"
click node_authcontext "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/auth/authContext.ts"
click node_authhook "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/auth/useAuth.ts"
click node_guards "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/auth/RouteGuards.tsx"
click node_moneyform "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/components/MoneyForm.tsx"
click node_main "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/main.py"
click node_authroutes "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/auth.py"
click node_accounts "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/accounts.py"
click node_admin "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/admin.py"
click node_movements "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/movements.py"
click node_statements "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/statements.py"
click node_dependencies "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/dependencies.py"
click node_security "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/core/security.py"
click node_ledger "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/services/ledger.py"
click node_verify "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/services/verify.py"
click node_dbsession "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/db/session.py"
click node_accountsmodel "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/account.py"
click node_membership "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/account_member.py"
click node_ledgerentry "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/ledger_entry.py"
click node_transaction "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/transaction.py"
click node_auditlog "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/audit_log.py"
click node_userrecord "https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/user.py"

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_app,node_authpages,node_pages,node_authprovider,node_authcontext,node_authhook,node_guards,node_moneyform,node_person toneBlue
class node_main,node_authroutes,node_accounts,node_admin,node_movements,node_statements,node_dependencies,node_security,node_postgres toneAmber
class node_ledger,node_verify toneMint
class node_dbsession,node_accountsmodel,node_membership,node_ledgerentry,node_transaction,node_auditlog,node_userrecord toneRose
```

## Components

### Web application

- [Route shell](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Auth pages](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/pages/AuthPages.tsx): `frontend/src/pages/AuthPages.tsx`
- [Banking pages](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/pages/AppPages.tsx): `frontend/src/pages/AppPages.tsx`
- [Auth provider](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/auth/AuthProvider.tsx): `frontend/src/auth/AuthProvider.tsx`
- [Auth context](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/auth/authContext.ts): `frontend/src/auth/authContext.ts`
- [Auth hook](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/auth/useAuth.ts): `frontend/src/auth/useAuth.ts`
- [Role guards](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/auth/RouteGuards.tsx): `frontend/src/auth/RouteGuards.tsx`
- [Money form](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/frontend/src/components/MoneyForm.tsx): `frontend/src/components/MoneyForm.tsx`

### API and access

- [API application](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/main.py): `backend/app/main.py`
- [Authentication](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/auth.py): `backend/app/api/routes/auth.py`
- [Accounts](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/accounts.py): `backend/app/api/routes/accounts.py`
- [Administration](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/admin.py): `backend/app/api/routes/admin.py`
- [Money movements](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/movements.py): `backend/app/api/routes/movements.py`
- [Statements and audit](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/routes/statements.py): `backend/app/api/routes/statements.py`
- [Auth dependencies](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/api/dependencies.py): `backend/app/api/dependencies.py`
- [Token security](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/core/security.py): `backend/app/core/security.py`

### Ledger domain

- [Ledger service](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/services/ledger.py): `backend/app/services/ledger.py`
- [Ledger verification](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/services/verify.py): `backend/app/services/verify.py`

### Persistence

- [DB sessions](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/db/session.py): `backend/app/db/session.py`
- [Account records](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/account.py): `backend/app/models/account.py`
- [Account membership](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/account_member.py): `backend/app/models/account_member.py`
- [Ledger entries](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/ledger_entry.py): `backend/app/models/ledger_entry.py`
- [Transactions](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/transaction.py): `backend/app/models/transaction.py`
- [Audit records](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/audit_log.py): `backend/app/models/audit_log.py`
- [User records](https://github.com/mohana-575/ledgerline-safe-payments/blob/main/backend/app/models/user.py): `backend/app/models/user.py`

### Other components

- **User**
- **PostgreSQL**

## Connections

- User → Route shell: uses
- Route shell → Auth pages: routes to (evidence: `frontend/src/App.tsx`)
- Route shell → Banking pages: routes to (evidence: `frontend/src/App.tsx`)
- Route shell → Auth provider: wraps (evidence: `frontend/src/App.tsx`)
- Route shell → Role guards: protects routes (evidence: `frontend/src/App.tsx`)
- Auth provider → Auth context: provides (evidence: `frontend/src/auth/AuthProvider.tsx`)
- Auth hook → Auth context: reads (evidence: `frontend/src/auth/useAuth.ts`)
- Role guards → Auth hook: checks user (evidence: `frontend/src/auth/RouteGuards.tsx`)
- Banking pages → Money form: renders (evidence: `frontend/src/pages/AppPages.tsx`)
- API application → Authentication: registers (evidence: `backend/app/main.py`)
- API application → Accounts: registers (evidence: `backend/app/main.py`)
- API application → Administration: registers (evidence: `backend/app/main.py`)
- API application → Money movements: registers (evidence: `backend/app/main.py`)
- API application → Statements and audit: registers (evidence: `backend/app/main.py`)
- Authentication → Token security: uses (evidence: `backend/app/api/routes/auth.py`)
- Authentication → Audit records: writes (evidence: `backend/app/api/routes/auth.py`)
- Authentication → User records: reads and writes (evidence: `backend/app/api/routes/auth.py`)
- Auth dependencies → Token security: decodes token (evidence: `backend/app/api/dependencies.py`)
- Auth dependencies → User records: loads user (evidence: `backend/app/api/dependencies.py`)
- Money movements → Ledger service: delegates (evidence: `backend/app/api/routes/movements.py`)
- Administration → Ledger service: uses (evidence: `backend/app/api/routes/admin.py`)
- Administration → Ledger verification: uses (evidence: `backend/app/api/routes/admin.py`)
- Ledger service → Account records: updates (evidence: `backend/app/services/ledger.py`)
- Ledger service → Account membership: checks access (evidence: `backend/app/services/ledger.py`)
- Ledger service → Ledger entries: creates entries (evidence: `backend/app/services/ledger.py`)
- Ledger service → Transactions: records movement (evidence: `backend/app/services/ledger.py`)
- Ledger service → Audit records: records action (evidence: `backend/app/services/ledger.py`)
- DB sessions → PostgreSQL: connects (evidence: `backend/app/db/session.py`)
- Authentication → DB sessions: opens session (evidence: `backend/app/api/routes/auth.py`)
- Money movements → DB sessions: opens session (evidence: `backend/app/api/routes/movements.py`)
- Statements and audit → DB sessions: opens session (evidence: `backend/app/api/routes/statements.py`)
