# sabarinathan145/pension-management-system-pod1 architecture

> Architecture diagram of the GitHub repository sabarinathan145/pension-management-system-pod1, 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/sabarinathan145/pension-management-system-pod1
- Repository: https://github.com/sabarinathan145/pension-management-system-pod1

## Overview

This repository implements a pension-management application: an Angular interface supports login, pension-detail lookup, and pension processing, backed by Spring services for authorization, pensioner records, processing, and disbursement. The documented operational workflow is to authenticate, verify pensioner details and calculate an amount, then request disbursement. The processing service coordinates detail lookup and disbursement and records inputs and amount details. Several frontend-to-backend and service-discovery connections are not shown in the excerpts, so those links are omitted or marked unverified.

Main entry points: [`process-pension-service/src/main/java/com/cts/processPension/service/ProcessPensionServiceImpl.java`](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/service/ProcessPensionServiceImpl.java) (Pension processing), [`authorization-service/src/main/java/com/cts/authorization/controller/AuthorizationController.java`](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/authorization-service/src/main/java/com/cts/authorization/controller/AuthorizationController.java) (Authorization API), [`Angular/src/app/components/login/login.component.ts`](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/Angular/src/app/components/login/login.component.ts) (Login screen), [`Angular/src/app/services/auth.service.ts`](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/Angular/src/app/services/auth.service.ts) (Auth client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Angular interface"]
  node_login_ui["Login screen<br/>[login.component.ts]"]
  node_auth_client["Auth client<br/>[auth.service.ts]"]
  node_pension_ui["Pension details screen"]
  node_process_ui["Process pension screen"]
end

subgraph group_identity["Authorization"]
  node_auth_controller["Authorization API"]
  node_user_service["User lookup"]
  node_user_store[("User repository")]
  node_jwt["JWT utility<br/>[JwtUtil.java]"]
end

subgraph group_pension["Pension workflow"]
  node_process_api["Pension processing API"]
  node_process_service["Pension processing"]
  node_pensioner_client["Pensioner client"]
  node_pensioner_api["Pensioner details API"]
  node_pensioner_service["Pensioner lookup"]
  node_detail_store[("Pensioner records")]
  node_pension_store[("Pension processing records")]
  node_input_store[("Pensioner inputs")]
  node_disbursement_client["Disbursement client"]
  node_disbursement_api["Disbursement API"]
  node_disbursement_service["Disbursement verification"]
end

subgraph group_platform["Service discovery"]
  node_eureka["Service registry"]
end

node_user(("Pension administrator"))

node_user -->|"uses"| node_login_ui
node_login_ui -.->|"submits login"| node_auth_client
node_auth_client -.->|"requests login"| node_auth_controller
node_user -->|"enters details"| node_pension_ui
node_user -->|"submits pension"| node_process_ui
node_auth_controller -->|"generates token"| node_jwt
node_auth_controller -->|"validates token"| node_jwt
node_user_service -->|"queries users"| node_user_store
node_process_ui -.->|"requests processing"| node_process_api
node_process_api -->|"delegates to"| node_process_service
node_process_service -->|"fetches details"| node_pensioner_client
node_pensioner_client -.->|"requests record"| node_pensioner_api
node_pensioner_api -->|"delegates to"| node_pensioner_service
node_pensioner_service -.->|"returns record"| node_detail_store
node_process_service -->|"saves input"| node_input_store
node_process_service -->|"requests disbursement"| node_disbursement_client
node_disbursement_client -.->|"calls endpoint"| node_disbursement_api
node_disbursement_api -->|"verifies pension"| node_disbursement_service
node_process_service -->|"saves amounts"| node_pension_store

click node_login_ui "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/Angular/src/app/components/login/login.component.ts"
click node_auth_client "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/Angular/src/app/services/auth.service.ts"
click node_pension_ui "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/Angular/src/app/components/pension-details/pension-details.component.ts"
click node_process_ui "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/Angular/src/app/components/process-pension/process-pension.component.ts"
click node_auth_controller "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/authorization-service/src/main/java/com/cts/authorization/controller/AuthorizationController.java"
click node_user_service "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/authorization-service/src/main/java/com/cts/authorization/service/UserServiceImpl.java"
click node_user_store "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/authorization-service/src/main/java/com/cts/authorization/repository/UserRepository.java"
click node_jwt "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/authorization-service/src/main/java/com/cts/authorization/util/JwtUtil.java"
click node_process_api "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/controller/ProcessPensionController.java"
click node_process_service "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/service/ProcessPensionServiceImpl.java"
click node_pensioner_client "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/feign/PensionerDetailsClient.java"
click node_pensioner_api "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Controller/PensionerDetailsController.java"
click node_pensioner_service "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Service/PensionerDetailServiceImpl.java"
click node_detail_store "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Model/PensionerDetails.java"
click node_pension_store "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/repository/PensionDetailsRepository.java"
click node_input_store "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/repository/PensionerDetailsRepository.java"
click node_disbursement_client "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/feign/PensionDisbursementClient.java"
click node_disbursement_api "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/pension-disbursement-service/src/main/java/com/cts/disbursepension/controller/DisbursePensionController.java"
click node_disbursement_service "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/pension-disbursement-service/src/main/java/com/cts/disbursepension/service/DisbursePensionServiceImpl.java"
click node_eureka "https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/eureka-server/src/main/java/com/cts/eurekaserver/EurekaServerApplication.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_login_ui,node_auth_client,node_pension_ui,node_process_ui toneBlue
class node_auth_controller,node_user_service,node_user_store,node_jwt toneAmber
class node_process_api,node_process_service,node_pensioner_client,node_pensioner_api,node_pensioner_service,node_detail_store,node_pension_store,node_input_store,node_disbursement_client,node_disbursement_api,node_disbursement_service toneMint
class node_eureka toneRose
class node_user toneIndigo
```

## Components

### Angular interface

- [Login screen](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/Angular/src/app/components/login/login.component.ts): `Angular/src/app/components/login/login.component.ts`
- [Auth client](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/Angular/src/app/services/auth.service.ts): `Angular/src/app/services/auth.service.ts`
- [Pension details screen](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/Angular/src/app/components/pension-details/pension-details.component.ts): `Angular/src/app/components/pension-details/pension-details.component.ts`
- [Process pension screen](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/Angular/src/app/components/process-pension/process-pension.component.ts): `Angular/src/app/components/process-pension/process-pension.component.ts`

### Authorization

- [Authorization API](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/authorization-service/src/main/java/com/cts/authorization/controller/AuthorizationController.java): `authorization-service/src/main/java/com/cts/authorization/controller/AuthorizationController.java`
- [User lookup](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/authorization-service/src/main/java/com/cts/authorization/service/UserServiceImpl.java): `authorization-service/src/main/java/com/cts/authorization/service/UserServiceImpl.java`
- [User repository](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/authorization-service/src/main/java/com/cts/authorization/repository/UserRepository.java): `authorization-service/src/main/java/com/cts/authorization/repository/UserRepository.java`
- [JWT utility](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/authorization-service/src/main/java/com/cts/authorization/util/JwtUtil.java): `authorization-service/src/main/java/com/cts/authorization/util/JwtUtil.java`

### Pension workflow

- [Pension processing API](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/controller/ProcessPensionController.java): `process-pension-service/src/main/java/com/cts/processPension/controller/ProcessPensionController.java`
- [Pension processing](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/service/ProcessPensionServiceImpl.java): `process-pension-service/src/main/java/com/cts/processPension/service/ProcessPensionServiceImpl.java`
- [Pensioner client](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/feign/PensionerDetailsClient.java): `process-pension-service/src/main/java/com/cts/processPension/feign/PensionerDetailsClient.java`
- [Pensioner details API](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Controller/PensionerDetailsController.java): `pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Controller/PensionerDetailsController.java`
- [Pensioner lookup](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Service/PensionerDetailServiceImpl.java): `pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Service/PensionerDetailServiceImpl.java`
- [Pensioner records](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Model/PensionerDetails.java): `pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Model/PensionerDetails.java`
- [Pension processing records](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/repository/PensionDetailsRepository.java): `process-pension-service/src/main/java/com/cts/processPension/repository/PensionDetailsRepository.java`
- [Pensioner inputs](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/repository/PensionerDetailsRepository.java): `process-pension-service/src/main/java/com/cts/processPension/repository/PensionerDetailsRepository.java`
- [Disbursement client](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/process-pension-service/src/main/java/com/cts/processPension/feign/PensionDisbursementClient.java): `process-pension-service/src/main/java/com/cts/processPension/feign/PensionDisbursementClient.java`
- [Disbursement API](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/pension-disbursement-service/src/main/java/com/cts/disbursepension/controller/DisbursePensionController.java): `pension-disbursement-service/src/main/java/com/cts/disbursepension/controller/DisbursePensionController.java`
- [Disbursement verification](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/pension-disbursement-service/src/main/java/com/cts/disbursepension/service/DisbursePensionServiceImpl.java): `pension-disbursement-service/src/main/java/com/cts/disbursepension/service/DisbursePensionServiceImpl.java`

### Service discovery

- [Service registry](https://github.com/sabarinathan145/pension-management-system-pod1/blob/main/eureka-server/src/main/java/com/cts/eurekaserver/EurekaServerApplication.java): `eureka-server/src/main/java/com/cts/eurekaserver/EurekaServerApplication.java`

### Other components

- **Pension administrator**

## Connections

- Pension administrator → Login screen: uses
- Login screen → Auth client: submits login
- Auth client → Authorization API: requests login
- Pension administrator → Pension details screen: enters details
- Pension administrator → Process pension screen: submits pension
- Authorization API → JWT utility: generates token (evidence: `authorization-service/src/main/java/com/cts/authorization/controller/AuthorizationController.java`)
- Authorization API → JWT utility: validates token (evidence: `authorization-service/src/main/java/com/cts/authorization/controller/AuthorizationController.java`)
- User lookup → User repository: queries users (evidence: `authorization-service/src/main/java/com/cts/authorization/service/UserServiceImpl.java`)
- Process pension screen → Pension processing API: requests processing
- Pension processing API → Pension processing: delegates to (evidence: `process-pension-service/src/main/java/com/cts/processPension/controller/ProcessPensionController.java`)
- Pension processing → Pensioner client: fetches details (evidence: `process-pension-service/src/main/java/com/cts/processPension/service/ProcessPensionServiceImpl.java`)
- Pensioner client → Pensioner details API: requests record
- Pensioner details API → Pensioner lookup: delegates to (evidence: `pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Controller/PensionerDetailsController.java`)
- Pensioner lookup → Pensioner records: returns record (evidence: `pensioner-detail-service/src/main/java/com/cts/pensionerDetails/Service/PensionerDetailServiceImpl.java`)
- Pension processing → Pensioner inputs: saves input (evidence: `process-pension-service/src/main/java/com/cts/processPension/service/ProcessPensionServiceImpl.java`)
- Pension processing → Disbursement client: requests disbursement (evidence: `process-pension-service/src/main/java/com/cts/processPension/service/ProcessPensionServiceImpl.java`)
- Disbursement client → Disbursement API: calls endpoint
- Disbursement API → Disbursement verification: verifies pension (evidence: `pension-disbursement-service/src/main/java/com/cts/disbursepension/controller/DisbursePensionController.java`)
- Pension processing → Pension processing records: saves amounts (evidence: `process-pension-service/src/main/java/com/cts/processPension/service/ProcessPensionServiceImpl.java`)
