# kyoshiin/pension-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/kyoshiin/pension-management-system
- Repository: https://github.com/kyoshiin/pension-management-system

## Overview

The Pension Management System is an Angular portal backed by four Spring services. Users authenticate for a JWT, retrieve and verify pensioner details, calculate pension, then submit pension and bank-charge values for disbursement validation. The README documents these capabilities; sampled controllers and services show the authorization and service-call structure. UI component internals and several client implementations were not sampled, so uncertain portal-to-API and service-to-service links are omitted or dashed.

Main entry points: [`Angular-UI/src/app/app.module.ts`](https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/app.module.ts) (Angular Portal), [`PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/controller/PensionerDetailController.java`](https://github.com/kyoshiin/pension-management-system/blob/master/PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/controller/PensionerDetailController.java) (Pensioner API), [`ProcessPension-Microservice/src/main/java/com/cts/pension/process/controller/ProcessPensionController.java`](https://github.com/kyoshiin/pension-management-system/blob/master/ProcessPension-Microservice/src/main/java/com/cts/pension/process/controller/ProcessPensionController.java) (Process API), [`Authorization-Microservice/src/main/java/com/cts/authorization/controller/JwtAuthenticationController.java`](https://github.com/kyoshiin/pension-management-system/blob/master/Authorization-Microservice/src/main/java/com/cts/authorization/controller/JwtAuthenticationController.java) (Authorization Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portal["Pension Portal"]
  node_portal["Angular Portal<br/>[app.module.ts]"]
  node_login["Login UI<br/>[login.component.ts]"]
  node_pensioner_ui["Pensioner Details UI"]
  node_pension_details_ui["Pension Details UI"]
  node_process_ui["Process Pension UI"]
end

subgraph group_identity["Authentication"]
  node_auth_api["Authentication API"]
  node_user_lookup["User Lookup"]
  node_user_store[("User Repository")]
  node_auth_service["Authorization Service"]
end

subgraph group_records["Pensioner Records"]
  node_pensioner_api["Pensioner API"]
  node_pensioner_lookup["Pensioner Lookup"]
  node_csv_records[("Pensioner CSV")]
end

subgraph group_processing["Pension Processing"]
  node_process_api["Process API"]
  node_calculation["Pension Calculation"]
  node_disbursement_api["Disbursement API"]
  node_validation["Amount Validation"]
end

node_user(("Portal User"))

node_user -->|"uses"| node_portal
node_portal -->|"routes to"| node_login
node_portal -->|"routes to"| node_pensioner_ui
node_portal -->|"routes to"| node_pension_details_ui
node_portal -->|"routes to"| node_process_ui
node_login -.->|"requests login"| node_auth_api
node_auth_api -->|"loads user"| node_user_lookup
node_user_lookup -->|"looks up"| node_user_store
node_auth_api -->|"issues token"| node_auth_service
node_pensioner_ui -.->|"requests details"| node_pensioner_api
node_pensioner_api -.->|"checks token"| node_auth_service
node_pensioner_api -->|"gets details"| node_pensioner_lookup
node_pensioner_lookup -->|"reads records"| node_csv_records
node_process_ui -.->|"submits pension"| node_process_api
node_process_api -->|"checks token"| node_auth_service
node_process_api -->|"calculates"| node_calculation
node_calculation -->|"fetches details"| node_pensioner_api
node_process_api -.->|"validates submission"| node_validation
node_validation -.->|"fetches bank data"| node_pensioner_api
node_disbursement_api -.->|"checks token"| node_auth_service
node_disbursement_api -->|"validates charges"| node_validation

click node_portal "https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/app.module.ts"
click node_login "https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/components/login/login.component.ts"
click node_pensioner_ui "https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/components/pensioner-details/pensioner-details.component.ts"
click node_pension_details_ui "https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/components/pension-details/pension-details.component.ts"
click node_process_ui "https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/components/process-pension/process-pension.component.ts"
click node_auth_api "https://github.com/kyoshiin/pension-management-system/blob/master/Authorization-Microservice/src/main/java/com/cts/authorization/controller/JwtAuthenticationController.java"
click node_user_lookup "https://github.com/kyoshiin/pension-management-system/blob/master/Authorization-Microservice/src/main/java/com/cts/authorization/service/JwtUserDetailsService.java"
click node_user_store "https://github.com/kyoshiin/pension-management-system/blob/master/Authorization-Microservice/src/main/java/com/cts/authorization/repository/UserRepository.java"
click node_pensioner_api "https://github.com/kyoshiin/pension-management-system/blob/master/PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/controller/PensionerDetailController.java"
click node_pensioner_lookup "https://github.com/kyoshiin/pension-management-system/blob/master/PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/service/PensionerDetailService.java"
click node_csv_records "https://github.com/kyoshiin/pension-management-system/blob/master/PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/service/PensionerDetailService.java"
click node_process_api "https://github.com/kyoshiin/pension-management-system/blob/master/ProcessPension-Microservice/src/main/java/com/cts/pension/process/controller/ProcessPensionController.java"
click node_calculation "https://github.com/kyoshiin/pension-management-system/blob/master/ProcessPension-Microservice/src/main/java/com/cts/pension/process/service/ProcessPensionService.java"
click node_disbursement_api "https://github.com/kyoshiin/pension-management-system/blob/master/PensionDisbursement-Microservice/src/main/java/com/cts/pension/disbursement/controller/PensionDisbursementController.java"
click node_validation "https://github.com/kyoshiin/pension-management-system/blob/master/PensionDisbursement-Microservice/src/main/java/com/cts/pension/disbursement/service/PensionDisbursementService.java"
click node_auth_service "https://github.com/kyoshiin/pension-management-system/blob/master/Authorization-Microservice/src/main/java/com/cts/authorization/controller/JwtAuthenticationController.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_portal,node_login,node_pensioner_ui,node_pension_details_ui,node_process_ui,node_user toneBlue
class node_auth_api,node_user_lookup,node_user_store,node_auth_service toneAmber
class node_pensioner_api,node_pensioner_lookup,node_csv_records toneMint
class node_process_api,node_calculation,node_disbursement_api,node_validation toneRose
```

## Components

### Pension Portal

- [Angular Portal](https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/app.module.ts): `Angular-UI/src/app/app.module.ts`
- [Login UI](https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/components/login/login.component.ts): `Angular-UI/src/app/components/login/login.component.ts`
- [Pensioner Details UI](https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/components/pensioner-details/pensioner-details.component.ts): `Angular-UI/src/app/components/pensioner-details/pensioner-details.component.ts`
- [Pension Details UI](https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/components/pension-details/pension-details.component.ts): `Angular-UI/src/app/components/pension-details/pension-details.component.ts`
- [Process Pension UI](https://github.com/kyoshiin/pension-management-system/blob/master/Angular-UI/src/app/components/process-pension/process-pension.component.ts): `Angular-UI/src/app/components/process-pension/process-pension.component.ts`

### Authentication

- [Authentication API](https://github.com/kyoshiin/pension-management-system/blob/master/Authorization-Microservice/src/main/java/com/cts/authorization/controller/JwtAuthenticationController.java): `Authorization-Microservice/src/main/java/com/cts/authorization/controller/JwtAuthenticationController.java`
- [User Lookup](https://github.com/kyoshiin/pension-management-system/blob/master/Authorization-Microservice/src/main/java/com/cts/authorization/service/JwtUserDetailsService.java): `Authorization-Microservice/src/main/java/com/cts/authorization/service/JwtUserDetailsService.java`
- [User Repository](https://github.com/kyoshiin/pension-management-system/blob/master/Authorization-Microservice/src/main/java/com/cts/authorization/repository/UserRepository.java): `Authorization-Microservice/src/main/java/com/cts/authorization/repository/UserRepository.java`
- [Authorization Service](https://github.com/kyoshiin/pension-management-system/blob/master/Authorization-Microservice/src/main/java/com/cts/authorization/controller/JwtAuthenticationController.java): `Authorization-Microservice/src/main/java/com/cts/authorization/controller/JwtAuthenticationController.java`

### Pensioner Records

- [Pensioner API](https://github.com/kyoshiin/pension-management-system/blob/master/PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/controller/PensionerDetailController.java): `PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/controller/PensionerDetailController.java`
- [Pensioner Lookup](https://github.com/kyoshiin/pension-management-system/blob/master/PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/service/PensionerDetailService.java): `PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/service/PensionerDetailService.java`
- [Pensioner CSV](https://github.com/kyoshiin/pension-management-system/blob/master/PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/service/PensionerDetailService.java): `PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/service/PensionerDetailService.java`

### Pension Processing

- [Process API](https://github.com/kyoshiin/pension-management-system/blob/master/ProcessPension-Microservice/src/main/java/com/cts/pension/process/controller/ProcessPensionController.java): `ProcessPension-Microservice/src/main/java/com/cts/pension/process/controller/ProcessPensionController.java`
- [Pension Calculation](https://github.com/kyoshiin/pension-management-system/blob/master/ProcessPension-Microservice/src/main/java/com/cts/pension/process/service/ProcessPensionService.java): `ProcessPension-Microservice/src/main/java/com/cts/pension/process/service/ProcessPensionService.java`
- [Disbursement API](https://github.com/kyoshiin/pension-management-system/blob/master/PensionDisbursement-Microservice/src/main/java/com/cts/pension/disbursement/controller/PensionDisbursementController.java): `PensionDisbursement-Microservice/src/main/java/com/cts/pension/disbursement/controller/PensionDisbursementController.java`
- [Amount Validation](https://github.com/kyoshiin/pension-management-system/blob/master/PensionDisbursement-Microservice/src/main/java/com/cts/pension/disbursement/service/PensionDisbursementService.java): `PensionDisbursement-Microservice/src/main/java/com/cts/pension/disbursement/service/PensionDisbursementService.java`

### Other components

- **Portal User**

## Connections

- Portal User → Angular Portal: uses
- Angular Portal → Login UI: routes to (evidence: `Angular-UI/src/app/app.module.ts`)
- Angular Portal → Pensioner Details UI: routes to (evidence: `Angular-UI/src/app/app.module.ts`)
- Angular Portal → Pension Details UI: routes to (evidence: `Angular-UI/src/app/app.module.ts`)
- Angular Portal → Process Pension UI: routes to (evidence: `Angular-UI/src/app/app.module.ts`)
- Login UI → Authentication API: requests login
- Authentication API → User Lookup: loads user (evidence: `Authorization-Microservice/src/main/java/com/cts/authorization/controller/JwtAuthenticationController.java`)
- User Lookup → User Repository: looks up (evidence: `Authorization-Microservice/src/main/java/com/cts/authorization/service/JwtUserDetailsService.java`)
- Authentication API → Authorization Service: issues token (evidence: `Authorization-Microservice/src/main/java/com/cts/authorization/controller/JwtAuthenticationController.java`)
- Pensioner Details UI → Pensioner API: requests details
- Pensioner API → Authorization Service: checks token
- Pensioner API → Pensioner Lookup: gets details (evidence: `PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/controller/PensionerDetailController.java`)
- Pensioner Lookup → Pensioner CSV: reads records (evidence: `PensionerDetail-Microservice/src/main/java/com/cts/pensioner/detail/service/PensionerDetailService.java`)
- Process Pension UI → Process API: submits pension
- Process API → Authorization Service: checks token (evidence: `ProcessPension-Microservice/src/main/java/com/cts/pension/process/controller/ProcessPensionController.java`)
- Process API → Pension Calculation: calculates (evidence: `ProcessPension-Microservice/src/main/java/com/cts/pension/process/controller/ProcessPensionController.java`)
- Pension Calculation → Pensioner API: fetches details (evidence: `ProcessPension-Microservice/src/main/java/com/cts/pension/process/service/ProcessPensionService.java`)
- Process API → Amount Validation: validates submission
- Amount Validation → Pensioner API: fetches bank data
- Disbursement API → Authorization Service: checks token
- Disbursement API → Amount Validation: validates charges (evidence: `PensionDisbursement-Microservice/src/main/java/com/cts/pension/disbursement/controller/PensionDisbursementController.java`)
