# aryandevcodes/double-ledger-banking-system architecture

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

- Interactive diagram: https://gitdiagram.com/aryandevcodes/double-ledger-banking-system
- Repository: https://github.com/aryandevcodes/double-ledger-banking-system

## Overview

Double Ledger is a full-stack banking platform: users work through role-aware React dashboards, which call Spring APIs for account management and financial operations. The principal money-movement path is request handling, transaction processing, and double-entry ledger posting, with balances derived from ledger entries. Other major capabilities include UPI payments, cards, loans, statements, authentication, security, audit, notifications, webhooks, and card-event streaming. The README documents these capabilities; sampled source verifies selected service behavior, while wiring for unsampled modules is represented only where documented.

Main entry points: [`bank-backend/src/main/java/com/bank/controller`](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/controller) (REST controllers), [`bank-backend/src/main/java/com/bank/service/transaction`](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/transaction) (Transaction processing), [`bank-frontend/src/pages`](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-frontend/src/pages) (React dashboards), [`bank-backend/src/main/java/com/bank/service/auth/AuthService.java`](https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/auth/AuthService.java) (Authentication service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_frontend["React dashboards"]
  node_api_client["API client<br/>[api-client.ts]"]
  node_auth_ui["Login and profile<br/>[AuthContext.tsx]"]
end

subgraph group_api["API and identity"]
  node_controllers["REST controllers"]
  node_auth["Authentication service<br/>[AuthService.java]"]
  node_security["JWT and access control"]
end

subgraph group_money["Financial operations"]
  node_transactions["Transaction processing"]
  node_ledger["Double-entry ledger writer"]
  node_upi["UPI payments"]
end

subgraph group_banking["Banking products"]
  node_accounts["Account and customer services"]
  node_composite["Composite banking"]
  node_cards["Cards and credit plans"]
  node_loans["Loans and EMI"]
  node_statements["Account statements"]
end

subgraph group_trust["Security and events"]
  node_audit["Audit logging"]
  node_security_ops["Sessions and access logs"]
  node_notifications["Notifications and email"]
  node_webhooks["Payment webhooks"]
  node_card_events["Card event stream"]
end

node_customer(("Banking user"))
node_database[("PostgreSQL")]
node_mail["Mail transport"]

node_customer -->|"uses"| node_frontend
node_frontend -->|"authenticates"| node_auth_ui
node_frontend -->|"requests"| node_api_client
node_auth_ui -->|"sends credentials"| node_api_client
node_api_client -->|"calls APIs"| node_controllers
node_controllers -->|"delegates auth"| node_auth
node_controllers -->|"delegates account work"| node_accounts
node_controllers -->|"submits transactions"| node_transactions
node_controllers -->|"submits UPI"| node_upi
node_controllers -->|"requests summaries"| node_composite
node_controllers -->|"manages cards"| node_cards
node_controllers -->|"manages loans"| node_loans
node_controllers -->|"requests statements"| node_statements
node_controllers -->|"requests audit logs"| node_audit
node_controllers -->|"manages sessions"| node_security_ops
node_transactions -->|"posts entries"| node_ledger
node_upi -->|"executes payment"| node_transactions
node_composite -->|"reads transactions"| node_transactions
node_composite -->|"reads balances"| node_ledger
node_statements -->|"reads accounts and transactions"| node_database
node_transactions -->|"persists transaction data"| node_database
node_ledger -->|"writes ledger entries"| node_database
node_auth -->|"issues tokens"| node_security
node_auth -->|"reads and updates users"| node_database
node_accounts -->|"persists account data"| node_database
node_audit -->|"stores audit logs"| node_database
node_security_ops -->|"stores access records"| node_database
node_notifications -.->|"sends email"| node_mail
node_controllers -->|"serves card events"| node_card_events
node_controllers -->|"manages subscriptions"| node_webhooks

click node_frontend "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-frontend/src/pages"
click node_api_client "https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-frontend/src/lib/api-client.ts"
click node_auth_ui "https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-frontend/src/contexts/AuthContext.tsx"
click node_controllers "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/controller"
click node_auth "https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/auth/AuthService.java"
click node_security "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/security"
click node_accounts "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/account"
click node_transactions "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/transaction"
click node_ledger "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/ledger"
click node_upi "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/upi"
click node_composite "https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/composite/CompositeBankingService.java"
click node_cards "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/card"
click node_loans "https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/controller/LoanController.java"
click node_statements "https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/statement/AccountStatementService.java"
click node_audit "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/audit"
click node_security_ops "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/security"
click node_notifications "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/notification"
click node_webhooks "https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/webhook"
click node_card_events "https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/event/CardEventService.java"

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_frontend,node_api_client,node_auth_ui,node_customer toneBlue
class node_controllers,node_auth,node_security,node_database toneAmber
class node_transactions,node_ledger,node_upi toneMint
class node_accounts,node_composite,node_cards,node_loans,node_statements toneRose
class node_audit,node_security_ops,node_notifications,node_webhooks,node_card_events,node_mail toneIndigo
```

## Components

### Web client

- [React dashboards](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-frontend/src/pages): `bank-frontend/src/pages`
- [API client](https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-frontend/src/lib/api-client.ts): `bank-frontend/src/lib/api-client.ts`
- [Login and profile](https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-frontend/src/contexts/AuthContext.tsx): `bank-frontend/src/contexts/AuthContext.tsx`

### API and identity

- [REST controllers](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/controller): `bank-backend/src/main/java/com/bank/controller`
- [Authentication service](https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/auth/AuthService.java): `bank-backend/src/main/java/com/bank/service/auth/AuthService.java`
- [JWT and access control](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/security): `bank-backend/src/main/java/com/bank/security`

### Financial operations

- [Transaction processing](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/transaction): `bank-backend/src/main/java/com/bank/service/transaction`
- [Double-entry ledger writer](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/ledger): `bank-backend/src/main/java/com/bank/ledger`
- [UPI payments](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/upi): `bank-backend/src/main/java/com/bank/service/upi`

### Banking products

- [Account and customer services](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/account): `bank-backend/src/main/java/com/bank/service/account`
- [Composite banking](https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/composite/CompositeBankingService.java): `bank-backend/src/main/java/com/bank/service/composite/CompositeBankingService.java`
- [Cards and credit plans](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/card): `bank-backend/src/main/java/com/bank/service/card`
- [Loans and EMI](https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/controller/LoanController.java): `bank-backend/src/main/java/com/bank/controller/LoanController.java`
- [Account statements](https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/statement/AccountStatementService.java): `bank-backend/src/main/java/com/bank/service/statement/AccountStatementService.java`

### Security and events

- [Audit logging](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/audit): `bank-backend/src/main/java/com/bank/service/audit`
- [Sessions and access logs](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/security): `bank-backend/src/main/java/com/bank/service/security`
- [Notifications and email](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/notification): `bank-backend/src/main/java/com/bank/service/notification`
- [Payment webhooks](https://github.com/aryandevcodes/double-ledger-banking-system/tree/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/webhook): `bank-backend/src/main/java/com/bank/service/webhook`
- [Card event stream](https://github.com/aryandevcodes/double-ledger-banking-system/blob/backend-alignment-upgrade/bank-backend/src/main/java/com/bank/service/event/CardEventService.java): `bank-backend/src/main/java/com/bank/service/event/CardEventService.java`

### Other components

- **Banking user**
- **PostgreSQL**
- **Mail transport**

## Connections

- Banking user → React dashboards: uses
- React dashboards → Login and profile: authenticates
- React dashboards → API client: requests
- Login and profile → API client: sends credentials
- API client → REST controllers: calls APIs
- REST controllers → Authentication service: delegates auth
- REST controllers → Account and customer services: delegates account work
- REST controllers → Transaction processing: submits transactions
- REST controllers → UPI payments: submits UPI
- REST controllers → Composite banking: requests summaries
- REST controllers → Cards and credit plans: manages cards
- REST controllers → Loans and EMI: manages loans
- REST controllers → Account statements: requests statements
- REST controllers → Audit logging: requests audit logs
- REST controllers → Sessions and access logs: manages sessions
- Transaction processing → Double-entry ledger writer: posts entries
- UPI payments → Transaction processing: executes payment
- Composite banking → Transaction processing: reads transactions
- Composite banking → Double-entry ledger writer: reads balances
- Account statements → PostgreSQL: reads accounts and transactions
- Transaction processing → PostgreSQL: persists transaction data
- Double-entry ledger writer → PostgreSQL: writes ledger entries
- Authentication service → JWT and access control: issues tokens
- Authentication service → PostgreSQL: reads and updates users
- Account and customer services → PostgreSQL: persists account data
- Audit logging → PostgreSQL: stores audit logs
- Sessions and access logs → PostgreSQL: stores access records
- Notifications and email → Mail transport: sends email
- REST controllers → Card event stream: serves card events
- REST controllers → Payment webhooks: manages subscriptions
