# tsendjav/loan-origination-system architecture

> Architecture diagram of the GitHub repository tsendjav/loan-origination-system, 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/tsendjav/loan-origination-system
- Repository: https://github.com/tsendjav/loan-origination-system

## Overview

This is a loan-origination system with a React client and Spring Boot API. The intended user journey is authentication, customer and document handling, then loan application submission and review, risk assessment, and decision/disbursement. The backend tree also includes user administration, notifications, reporting, and health endpoints. Some frontend screens and backend subsystems are present in the tree but were not sampled, so their internal wiring is not asserted; dashed links mark only the broad, unverified UI-to-API boundary.

Main entry points: [`frontend/src/App.tsx`](https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/App.tsx) (React application), [`backend/src/main/java/com/company/los/service/impl/LoanApplicationServiceImpl.java`](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/impl/LoanApplicationServiceImpl.java) (Loan workflow and risk), [`frontend/src/services/apiClient.ts`](https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/services/apiClient.ts) (API client), [`backend/src/main/java/com/company/los/controller/CustomerController.java`](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/controller/CustomerController.java) (Customer API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_clientapp["React application<br/>[App.tsx]"]
  node_login["Login page<br/>[LoginPage.tsx]"]
  node_customerui["Customer screens<br/>[CustomerPage.tsx]"]
  node_loanui["Loan screens"]
  node_apiclient["API client<br/>[apiClient.ts]"]
end

subgraph group_access["Identity and access"]
  node_authapi["Authentication API"]
  node_authservice["Authentication logic"]
  node_users["User administration<br/>[UserService.java]"]
end

subgraph group_origination["Loan origination"]
  node_customerapi["Customer API"]
  node_customerservice["Customer services"]
  node_customerdata["Customer records<br/>[Customer.java]"]
  node_documentservice["Document handling"]
  node_loanapi["Loan API"]
  node_loanservice["Loan workflow and risk"]
  node_loandata["Loan applications"]
  node_loanrepo["Loan repository"]
end

subgraph group_operations["Platform operations"]
  node_health["Health API"]
  node_reporting["Dashboard and reporting"]
  node_database[("H2 database")]
end

node_staff(("Staff user"))

node_staff -.->|"uses"| node_clientapp
node_clientapp -.->|"presents"| node_login
node_clientapp -.->|"presents"| node_customerui
node_clientapp -.->|"presents"| node_loanui
node_login -.->|"submits requests"| node_apiclient
node_customerui -.->|"submits requests"| node_apiclient
node_loanui -.->|"submits requests"| node_apiclient
node_authapi -->|"delegates to"| node_authservice
node_authservice -.->|"uses user operations"| node_users
node_customerapi -->|"delegates to"| node_customerservice
node_loanapi -->|"delegates to"| node_loanservice
node_loanservice -->|"queries and saves"| node_loanrepo
node_loanservice -->|"uses document service"| node_documentservice
node_loanservice -.->|"reads customer data"| node_customerservice
node_customerapi -->|"uses customer entity"| node_customerdata
node_loanapi -->|"uses loan entity"| node_loandata
node_loanrepo -->|"persists"| node_loandata
node_apiclient -->|"checks health"| node_health
node_database -.->|"stores application data"| node_database

click node_clientapp "https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/App.tsx"
click node_login "https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/pages/LoginPage.tsx"
click node_customerui "https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/pages/CustomerPage.tsx"
click node_loanui "https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/pages/LoanApplicationPage.tsx"
click node_apiclient "https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/services/apiClient.ts"
click node_authapi "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/controller/AuthController.java"
click node_authservice "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/impl/AuthServiceImpl.java"
click node_users "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/UserService.java"
click node_customerapi "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/controller/CustomerController.java"
click node_customerservice "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/CustomerService.java"
click node_customerdata "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/entity/Customer.java"
click node_documentservice "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/DocumentService.java"
click node_loanapi "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/controller/LoanApplicationController.java"
click node_loanservice "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/impl/LoanApplicationServiceImpl.java"
click node_loandata "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/entity/LoanApplication.java"
click node_loanrepo "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/repository/LoanApplicationRepository.java"
click node_health "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/controller/HealthController.java"
click node_reporting "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/repository/ReportingRepository.java"
click node_database "https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/config/DatabaseConfig.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_clientapp,node_login,node_customerui,node_loanui,node_apiclient,node_staff toneBlue
class node_authapi,node_authservice,node_users toneAmber
class node_customerapi,node_customerservice,node_customerdata,node_documentservice,node_loanapi,node_loanservice,node_loandata,node_loanrepo toneMint
class node_health,node_reporting,node_database toneRose
```

## Components

### Web client

- [React application](https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Login page](https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/pages/LoginPage.tsx): `frontend/src/pages/LoginPage.tsx`
- [Customer screens](https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/pages/CustomerPage.tsx): `frontend/src/pages/CustomerPage.tsx`
- [Loan screens](https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/pages/LoanApplicationPage.tsx): `frontend/src/pages/LoanApplicationPage.tsx`
- [API client](https://github.com/tsendjav/loan-origination-system/blob/main/frontend/src/services/apiClient.ts): `frontend/src/services/apiClient.ts`

### Identity and access

- [Authentication API](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/controller/AuthController.java): `backend/src/main/java/com/company/los/controller/AuthController.java`
- [Authentication logic](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/impl/AuthServiceImpl.java): `backend/src/main/java/com/company/los/service/impl/AuthServiceImpl.java`
- [User administration](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/UserService.java): `backend/src/main/java/com/company/los/service/UserService.java`

### Loan origination

- [Customer API](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/controller/CustomerController.java): `backend/src/main/java/com/company/los/controller/CustomerController.java`
- [Customer services](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/CustomerService.java): `backend/src/main/java/com/company/los/service/CustomerService.java`
- [Customer records](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/entity/Customer.java): `backend/src/main/java/com/company/los/entity/Customer.java`
- [Document handling](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/DocumentService.java): `backend/src/main/java/com/company/los/service/DocumentService.java`
- [Loan API](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/controller/LoanApplicationController.java): `backend/src/main/java/com/company/los/controller/LoanApplicationController.java`
- [Loan workflow and risk](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/service/impl/LoanApplicationServiceImpl.java): `backend/src/main/java/com/company/los/service/impl/LoanApplicationServiceImpl.java`
- [Loan applications](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/entity/LoanApplication.java): `backend/src/main/java/com/company/los/entity/LoanApplication.java`
- [Loan repository](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/repository/LoanApplicationRepository.java): `backend/src/main/java/com/company/los/repository/LoanApplicationRepository.java`

### Platform operations

- [Health API](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/controller/HealthController.java): `backend/src/main/java/com/company/los/controller/HealthController.java`
- [Dashboard and reporting](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/repository/ReportingRepository.java): `backend/src/main/java/com/company/los/repository/ReportingRepository.java`
- [H2 database](https://github.com/tsendjav/loan-origination-system/blob/main/backend/src/main/java/com/company/los/config/DatabaseConfig.java): `backend/src/main/java/com/company/los/config/DatabaseConfig.java`

### Other components

- **Staff user**

## Connections

- Staff user → React application: uses
- React application → Login page: presents
- React application → Customer screens: presents
- React application → Loan screens: presents
- Login page → API client: submits requests
- Customer screens → API client: submits requests
- Loan screens → API client: submits requests
- Authentication API → Authentication logic: delegates to (evidence: `backend/src/main/java/com/company/los/controller/AuthController.java`)
- Authentication logic → User administration: uses user operations
- Customer API → Customer services: delegates to (evidence: `backend/src/main/java/com/company/los/controller/CustomerController.java`)
- Loan API → Loan workflow and risk: delegates to (evidence: `backend/src/main/java/com/company/los/controller/LoanApplicationController.java`)
- Loan workflow and risk → Loan repository: queries and saves (evidence: `backend/src/main/java/com/company/los/service/impl/LoanApplicationServiceImpl.java`)
- Loan workflow and risk → Document handling: uses document service (evidence: `backend/src/main/java/com/company/los/service/impl/LoanApplicationServiceImpl.java`)
- Loan workflow and risk → Customer services: reads customer data
- Customer API → Customer records: uses customer entity (evidence: `backend/src/main/java/com/company/los/controller/CustomerController.java`)
- Loan API → Loan applications: uses loan entity (evidence: `backend/src/main/java/com/company/los/controller/LoanApplicationController.java`)
- Loan repository → Loan applications: persists (evidence: `backend/src/main/java/com/company/los/repository/LoanApplicationRepository.java`)
- API client → Health API: checks health (evidence: `frontend/src/services/apiClient.ts`)
- H2 database → H2 database: stores application data
