# sofiarahul/banking-platform architecture

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

- Interactive diagram: https://gitdiagram.com/sofiarahul/banking-platform
- Repository: https://github.com/sofiarahul/banking-platform

## Overview

This repository implements a digital banking platform with a React client and Spring backend. The main user journey is authentication, selecting an account, then viewing or performing account operations; additional flows cover savings goals, spending insights, statements and scheduled payments. The tree identifies these product areas, and sampled source confirms selected service behavior, including account operations, insight queries and savings-goal persistence. No README was provided, and most controller/service wiring was not sampled, so uncertain call relationships are omitted.

Main entry points: [`src/App.jsx`](https://github.com/sofiarahul/banking-platform/blob/main/src/App.jsx) (Application routes), [`src/api/axiosClient.js`](https://github.com/sofiarahul/banking-platform/blob/main/src/api/axiosClient.js) (API client), [`src/pages`](https://github.com/sofiarahul/banking-platform/tree/main/src/pages) (Account pages), [`backend/src/main/java/com/group1/banking/service/AuthService.java`](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/AuthService.java) (Authentication service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Banking client"]
  node_app["Application routes<br/>[App.jsx]"]
  node_auth_ui["Auth UI<br/>[AuthContext.jsx]"]
  node_account_pages["Account pages"]
  node_customer_pages["Customer pages"]
  node_insight_pages["Insights and history"]
  node_goal_ui["Goal components"]
  node_api_client["API client<br/>[axiosClient.js]"]
end

subgraph group_identity["Identity and access"]
  node_auth_controller["Authentication API"]
  node_auth_service["Authentication service<br/>[AuthService.java]"]
  node_jwt["JWT service<br/>[JwtService.java]"]
end

subgraph group_accounts["Accounts and payments"]
  node_account_controller["Account API"]
  node_transaction_controller["Transaction API"]
  node_account_service["Account operations"]
  node_money_service["Money operations"]
  node_standing_orders["Standing orders"]
  node_standing_scheduler["Order execution"]
  node_gic["GIC investments<br/>[GicService.java]"]
end

subgraph group_customer_services["Customer services"]
  node_goals_controller["Savings goals API"]
  node_goals_service["Savings goal service"]
  node_insights_controller["Insights API"]
  node_insights_service["Spending insights"]
  node_statements["Statements"]
  node_notifications["Notifications"]
  node_customer_api["Customer management"]
end

node_customer(("Customer"))
node_admin(("Bank admin"))
node_repositories[("Persistence repositories")]

node_customer -->|"uses"| node_app
node_admin -->|"uses"| node_app
node_app -->|"renders"| node_auth_ui
node_app -->|"routes"| node_account_pages
node_app -->|"routes"| node_customer_pages
node_app -->|"routes"| node_insight_pages
node_account_pages -->|"requests data"| node_api_client
node_customer_pages -->|"requests data"| node_api_client
node_insight_pages -->|"requests data"| node_api_client
node_goal_ui -->|"requests data"| node_api_client
node_auth_controller -->|"delegates"| node_auth_service
node_auth_service -->|"issues tokens"| node_jwt
node_goals_controller -->|"delegates"| node_goals_service
node_goals_service -->|"reads and writes"| node_repositories
node_insights_service -->|"queries transactions"| node_repositories
node_standing_scheduler -->|"executes orders"| node_standing_orders

click node_app "https://github.com/sofiarahul/banking-platform/blob/main/src/App.jsx"
click node_auth_ui "https://github.com/sofiarahul/banking-platform/blob/main/src/auth/AuthContext.jsx"
click node_account_pages "https://github.com/sofiarahul/banking-platform/tree/main/src/pages"
click node_customer_pages "https://github.com/sofiarahul/banking-platform/tree/main/src/pages"
click node_insight_pages "https://github.com/sofiarahul/banking-platform/tree/main/src/pages"
click node_goal_ui "https://github.com/sofiarahul/banking-platform/tree/main/src/components"
click node_api_client "https://github.com/sofiarahul/banking-platform/blob/main/src/api/axiosClient.js"
click node_auth_controller "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/AuthController.java"
click node_auth_service "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/AuthService.java"
click node_jwt "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/security/JwtService.java"
click node_account_controller "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/AccountController.java"
click node_transaction_controller "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/TransactionController.java"
click node_account_service "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/impl/AccountService.java"
click node_money_service "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/impl/MonetaryOperationService.java"
click node_standing_orders "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/StandingOrderService.java"
click node_standing_scheduler "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/scheduler/StandingOrderExecutionJob.java"
click node_gic "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/impl/GicService.java"
click node_goals_controller "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/SavingsGoalController.java"
click node_goals_service "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/SavingsGoalService.java"
click node_insights_controller "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/InsightController.java"
click node_insights_service "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/SpendingInsightService.java"
click node_statements "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/MonthlyStatementService.java"
click node_notifications "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/NotificationController.java"
click node_customer_api "https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/CustomerController.java"
click node_repositories "https://github.com/sofiarahul/banking-platform/tree/main/backend/src/main/java/com/group1/banking/repository"

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_auth_ui,node_account_pages,node_customer_pages,node_insight_pages,node_goal_ui,node_api_client toneBlue
class node_auth_controller,node_auth_service,node_jwt,node_repositories toneAmber
class node_account_controller,node_transaction_controller,node_account_service,node_money_service,node_standing_orders,node_standing_scheduler,node_gic toneMint
class node_goals_controller,node_goals_service,node_insights_controller,node_insights_service,node_statements,node_notifications,node_customer_api toneRose
class node_customer,node_admin toneIndigo
```

## Components

### Banking client

- [Application routes](https://github.com/sofiarahul/banking-platform/blob/main/src/App.jsx): `src/App.jsx`
- [Auth UI](https://github.com/sofiarahul/banking-platform/blob/main/src/auth/AuthContext.jsx): `src/auth/AuthContext.jsx`
- [Account pages](https://github.com/sofiarahul/banking-platform/tree/main/src/pages): `src/pages`
- [Customer pages](https://github.com/sofiarahul/banking-platform/tree/main/src/pages): `src/pages`
- [Insights and history](https://github.com/sofiarahul/banking-platform/tree/main/src/pages): `src/pages`
- [Goal components](https://github.com/sofiarahul/banking-platform/tree/main/src/components): `src/components`
- [API client](https://github.com/sofiarahul/banking-platform/blob/main/src/api/axiosClient.js): `src/api/axiosClient.js`

### Identity and access

- [Authentication API](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/AuthController.java): `backend/src/main/java/com/group1/banking/controller/AuthController.java`
- [Authentication service](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/AuthService.java): `backend/src/main/java/com/group1/banking/service/AuthService.java`
- [JWT service](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/security/JwtService.java): `backend/src/main/java/com/group1/banking/security/JwtService.java`

### Accounts and payments

- [Account API](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/AccountController.java): `backend/src/main/java/com/group1/banking/controller/AccountController.java`
- [Transaction API](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/TransactionController.java): `backend/src/main/java/com/group1/banking/controller/TransactionController.java`
- [Account operations](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/impl/AccountService.java): `backend/src/main/java/com/group1/banking/service/impl/AccountService.java`
- [Money operations](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/impl/MonetaryOperationService.java): `backend/src/main/java/com/group1/banking/service/impl/MonetaryOperationService.java`
- [Standing orders](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/StandingOrderService.java): `backend/src/main/java/com/group1/banking/service/StandingOrderService.java`
- [Order execution](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/scheduler/StandingOrderExecutionJob.java): `backend/src/main/java/com/group1/banking/scheduler/StandingOrderExecutionJob.java`
- [GIC investments](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/impl/GicService.java): `backend/src/main/java/com/group1/banking/service/impl/GicService.java`

### Customer services

- [Savings goals API](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/SavingsGoalController.java): `backend/src/main/java/com/group1/banking/controller/SavingsGoalController.java`
- [Savings goal service](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/SavingsGoalService.java): `backend/src/main/java/com/group1/banking/service/SavingsGoalService.java`
- [Insights API](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/InsightController.java): `backend/src/main/java/com/group1/banking/controller/InsightController.java`
- [Spending insights](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/SpendingInsightService.java): `backend/src/main/java/com/group1/banking/service/SpendingInsightService.java`
- [Statements](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/service/MonthlyStatementService.java): `backend/src/main/java/com/group1/banking/service/MonthlyStatementService.java`
- [Notifications](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/NotificationController.java): `backend/src/main/java/com/group1/banking/controller/NotificationController.java`
- [Customer management](https://github.com/sofiarahul/banking-platform/blob/main/backend/src/main/java/com/group1/banking/controller/CustomerController.java): `backend/src/main/java/com/group1/banking/controller/CustomerController.java`

### Other components

- **Customer**
- **Bank admin**
- [Persistence repositories](https://github.com/sofiarahul/banking-platform/tree/main/backend/src/main/java/com/group1/banking/repository): `backend/src/main/java/com/group1/banking/repository`

## Connections

- Customer → Application routes: uses
- Bank admin → Application routes: uses
- Application routes → Auth UI: renders
- Application routes → Account pages: routes
- Application routes → Customer pages: routes
- Application routes → Insights and history: routes
- Account pages → API client: requests data
- Customer pages → API client: requests data
- Insights and history → API client: requests data
- Goal components → API client: requests data
- Authentication API → Authentication service: delegates
- Authentication service → JWT service: issues tokens
- Savings goals API → Savings goal service: delegates
- Savings goal service → Persistence repositories: reads and writes
- Spending insights → Persistence repositories: queries transactions
- Order execution → Standing orders: executes orders
