# shivakumarni777-coder/lms-oc architecture

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

- Interactive diagram: https://gitdiagram.com/shivakumarni777-coder/lms-oc
- Repository: https://github.com/shivakumarni777-coder/lms-oc

## Overview

This is a bank and loan-origination system: customers register, establish an account when needed, apply for loans, and view loan status; administrators review account requests and approve loans, triggering EMI calculation. The React SPA routes screens through query hooks and resource APIs to a Spring Boot service layer and MySQL-backed repositories; loan documents also use storage. README documents the frontend direction and API capabilities, while sampled source confirms account-request and loan-service behavior. Several controller and document links are unsampled, so those relationships are omitted or marked unverified.

Main entry points: [`src/main/java/com/bank/lms/controller`](https://github.com/shivakumarni777-coder/lms-oc/tree/main/src/main/java/com/bank/lms/controller) (REST controllers), [`frontend/src/App.jsx`](https://github.com/shivakumarni777-coder/lms-oc/blob/main/frontend/src/App.jsx) (React route shell), [`frontend/src/hooks`](https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/hooks) (Query hooks), [`src/main/java/com/bank/lms/service/AccountOpeningService.java`](https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/AccountOpeningService.java) (Account opening workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_spa["React route shell<br/>[App.jsx]"]
  node_customer_screens["Customer screens"]
  node_account_screens["Account review screens"]
  node_loan_screens["Loan screens"]
  node_query_hooks["Query hooks"]
  node_resource_api["Resource API modules"]
  node_http["HTTP and CSRF client<br/>[httpClient.js]"]
end

subgraph group_identity["Identity and accounts"]
  node_session_auth["Session authentication<br/>[AuthService.java]"]
  node_account_opening["Account opening workflow"]
  node_account_requests[("Account request store")]
  node_customer_profile["Customer profile"]
end

subgraph group_lending["Loan origination"]
  node_loan_workflow["Loan workflow<br/>[LoanService.java]"]
  node_emi["EMI calculation<br/>[EmiCalculator.java]"]
  node_documents["Loan documents"]
  node_document_storage["Document storage"]
end

subgraph group_platform["Backend platform"]
  node_api_controllers["REST controllers"]
  node_repositories[("Loan and customer repositories")]
end

node_customer(("Customer or admin"))
node_mysql[("MySQL database")]

node_customer -->|"uses"| node_spa
node_spa -->|"routes to"| node_customer_screens
node_spa -->|"routes to"| node_account_screens
node_spa -->|"routes to"| node_loan_screens
node_customer_screens -->|"uses"| node_query_hooks
node_account_screens -->|"uses"| node_query_hooks
node_loan_screens -->|"uses"| node_query_hooks
node_query_hooks -->|"calls"| node_resource_api
node_resource_api -->|"sends requests"| node_http
node_http -->|"calls API"| node_api_controllers
node_api_controllers -.->|"authenticates"| node_session_auth
node_api_controllers -->|"delegates to"| node_account_opening
node_account_opening -->|"reads and writes"| node_account_requests
node_account_opening -->|"uses"| node_customer_profile
node_api_controllers -.->|"delegates to"| node_loan_workflow
node_loan_workflow -->|"calculates with"| node_emi
node_loan_workflow -->|"reads and writes"| node_repositories
node_api_controllers -.->|"delegates to"| node_documents
node_documents -.->|"stores files"| node_document_storage
node_repositories -->|"persists entities"| node_mysql
node_account_requests -->|"persists requests"| node_mysql

click node_spa "https://github.com/shivakumarni777-coder/lms-oc/blob/main/frontend/src/App.jsx"
click node_customer_screens "https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/features/customers"
click node_account_screens "https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/features/accounts"
click node_loan_screens "https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/features/loans"
click node_query_hooks "https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/hooks"
click node_resource_api "https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/api"
click node_http "https://github.com/shivakumarni777-coder/lms-oc/blob/main/frontend/src/lib/httpClient.js"
click node_session_auth "https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/AuthService.java"
click node_account_opening "https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/AccountOpeningService.java"
click node_account_requests "https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/repository/AccountOpeningRequestRepository.java"
click node_customer_profile "https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/CustomerService.java"
click node_loan_workflow "https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/LoanService.java"
click node_emi "https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/EmiCalculator.java"
click node_documents "https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/LoanDocumentService.java"
click node_document_storage "https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/storage/DocumentStorage.java"
click node_api_controllers "https://github.com/shivakumarni777-coder/lms-oc/tree/main/src/main/java/com/bank/lms/controller"
click node_repositories "https://github.com/shivakumarni777-coder/lms-oc/tree/main/src/main/java/com/bank/lms/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_spa,node_customer_screens,node_account_screens,node_loan_screens,node_query_hooks,node_resource_api,node_http toneBlue
class node_session_auth,node_account_opening,node_account_requests,node_customer_profile,node_mysql toneAmber
class node_loan_workflow,node_emi,node_documents,node_document_storage toneMint
class node_api_controllers,node_repositories toneRose
class node_customer toneIndigo
```

## Components

### Web experience

- [React route shell](https://github.com/shivakumarni777-coder/lms-oc/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Customer screens](https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/features/customers): `frontend/src/features/customers`
- [Account review screens](https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/features/accounts): `frontend/src/features/accounts`
- [Loan screens](https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/features/loans): `frontend/src/features/loans`
- [Query hooks](https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/hooks): `frontend/src/hooks`
- [Resource API modules](https://github.com/shivakumarni777-coder/lms-oc/tree/main/frontend/src/api): `frontend/src/api`
- [HTTP and CSRF client](https://github.com/shivakumarni777-coder/lms-oc/blob/main/frontend/src/lib/httpClient.js): `frontend/src/lib/httpClient.js`

### Identity and accounts

- [Session authentication](https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/AuthService.java): `src/main/java/com/bank/lms/service/AuthService.java`
- [Account opening workflow](https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/AccountOpeningService.java): `src/main/java/com/bank/lms/service/AccountOpeningService.java`
- [Account request store](https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/repository/AccountOpeningRequestRepository.java): `src/main/java/com/bank/lms/repository/AccountOpeningRequestRepository.java`
- [Customer profile](https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/CustomerService.java): `src/main/java/com/bank/lms/service/CustomerService.java`

### Loan origination

- [Loan workflow](https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/LoanService.java): `src/main/java/com/bank/lms/service/LoanService.java`
- [EMI calculation](https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/EmiCalculator.java): `src/main/java/com/bank/lms/service/EmiCalculator.java`
- [Loan documents](https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/LoanDocumentService.java): `src/main/java/com/bank/lms/service/LoanDocumentService.java`
- [Document storage](https://github.com/shivakumarni777-coder/lms-oc/blob/main/src/main/java/com/bank/lms/service/storage/DocumentStorage.java): `src/main/java/com/bank/lms/service/storage/DocumentStorage.java`

### Backend platform

- [REST controllers](https://github.com/shivakumarni777-coder/lms-oc/tree/main/src/main/java/com/bank/lms/controller): `src/main/java/com/bank/lms/controller`
- [Loan and customer repositories](https://github.com/shivakumarni777-coder/lms-oc/tree/main/src/main/java/com/bank/lms/repository): `src/main/java/com/bank/lms/repository`

### Other components

- **Customer or admin**
- **MySQL database**

## Connections

- Customer or admin → React route shell: uses (evidence: `README.md`)
- React route shell → Customer screens: routes to (evidence: `frontend/src/App.jsx`)
- React route shell → Account review screens: routes to (evidence: `frontend/src/App.jsx`)
- React route shell → Loan screens: routes to (evidence: `frontend/src/App.jsx`)
- Customer screens → Query hooks: uses (evidence: `README.md`)
- Account review screens → Query hooks: uses (evidence: `frontend/src/features/accounts/AccountRequestReviewPage.jsx`)
- Loan screens → Query hooks: uses (evidence: `README.md`)
- Query hooks → Resource API modules: calls (evidence: `frontend/src/hooks/useAccountRequests.js`)
- Resource API modules → HTTP and CSRF client: sends requests (evidence: `frontend/src/api/accountService.js`)
- HTTP and CSRF client → REST controllers: calls API (evidence: `README.md`)
- REST controllers → Session authentication: authenticates (evidence: `src/main/java/com/bank/lms/controller/AuthController.java`)
- REST controllers → Account opening workflow: delegates to (evidence: `src/main/java/com/bank/lms/controller/AccountOpeningController.java`)
- Account opening workflow → Account request store: reads and writes (evidence: `src/main/java/com/bank/lms/service/AccountOpeningService.java`)
- Account opening workflow → Customer profile: uses (evidence: `src/main/java/com/bank/lms/service/AccountOpeningService.java`)
- REST controllers → Loan workflow: delegates to
- Loan workflow → EMI calculation: calculates with (evidence: `src/main/java/com/bank/lms/service/LoanService.java`)
- Loan workflow → Loan and customer repositories: reads and writes (evidence: `src/main/java/com/bank/lms/service/LoanService.java`)
- REST controllers → Loan documents: delegates to
- Loan documents → Document storage: stores files
- Loan and customer repositories → MySQL database: persists entities (evidence: `README.md`)
- Account request store → MySQL database: persists requests (evidence: `README.md`)
