# shanthan-peshwaker/employee-leave-management architecture

> Architecture diagram of the GitHub repository shanthan-peshwaker/employee-leave-management, 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/shanthan-peshwaker/employee-leave-management
- Repository: https://github.com/shanthan-peshwaker/employee-leave-management

## Overview

This is a Spring Boot employee and leave-management API. Employees can be onboarded, updated, listed, and deactivated; employees can submit leave requests, while managers review pending requests and approve or reject them. Approval deducts leave balance; applying does not. The services coordinate validation and repository access, with DTOs shaping API data and JPA repositories providing persistence. The README gives no further capability detail, and only selected source was sampled, so framework wiring and unsampled behavior are not expanded here.

Main entry points: [`hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/service/LeaveService.java`](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/service/LeaveService.java) (Leave service), [`hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/EmployeeRepository.java`](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/EmployeeRepository.java) (Employee repository), [`hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/controller/EmployeeController.java`](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/controller/EmployeeController.java) (Employee endpoints), [`hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/controller/LeaveController.java`](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/controller/LeaveController.java) (Leave endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_employee_api["Employee endpoints"]
  node_leave_api["Leave endpoints"]
  node_api_dtos["API DTOs"]
  node_error_handler["API error mapping"]
end

subgraph group_workflows["HR Workflows"]
  node_employee_service["Employee service"]
  node_leave_service["Leave service<br/>[LeaveService.java]"]
end

subgraph group_persistence["Persistence"]
  node_employee_repo["Employee repository"]
  node_request_repo["Leave request repository"]
  node_balance_repo["Leave balance repository"]
  node_employee_entity["Employee records<br/>[Employee.java]"]
  node_leave_entities["Leave domain records"]
  node_relational_db[("Relational database")]
end

node_employee_actor(("Employee / Manager"))

node_employee_actor -->|"sends requests"| node_employee_api
node_employee_actor -->|"sends requests"| node_leave_api
node_employee_api -->|"invokes"| node_employee_service
node_leave_api -->|"invokes"| node_leave_service
node_employee_api -->|"accepts / returns"| node_api_dtos
node_leave_api -->|"accepts / returns"| node_api_dtos
node_employee_service -->|"queries / saves"| node_employee_repo
node_leave_service -->|"loads employees"| node_employee_repo
node_leave_service -->|"queries / saves"| node_request_repo
node_leave_service -->|"reads / updates"| node_balance_repo
node_employee_repo -->|"persists"| node_relational_db
node_request_repo -->|"persists"| node_relational_db
node_balance_repo -->|"persists"| node_relational_db
node_employee_repo -->|"maps records"| node_employee_entity
node_request_repo -->|"maps records"| node_leave_entities
node_balance_repo -->|"maps records"| node_leave_entities

click node_employee_api "https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/controller/EmployeeController.java"
click node_leave_api "https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/controller/LeaveController.java"
click node_employee_service "https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/service/EmployeeService.java"
click node_leave_service "https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/service/LeaveService.java"
click node_api_dtos "https://github.com/shanthan-peshwaker/employee-leave-management/tree/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/dto"
click node_error_handler "https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/exception/GlobalExceptionHandler.java"
click node_employee_repo "https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/EmployeeRepository.java"
click node_request_repo "https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/LeaveRequestRepository.java"
click node_balance_repo "https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/LeaveBalanceRepository.java"
click node_employee_entity "https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/entity/Employee.java"
click node_leave_entities "https://github.com/shanthan-peshwaker/employee-leave-management/tree/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/entity"

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_employee_api,node_leave_api,node_api_dtos,node_error_handler toneBlue
class node_employee_service,node_leave_service toneAmber
class node_employee_repo,node_request_repo,node_balance_repo,node_employee_entity,node_leave_entities,node_relational_db toneMint
class node_employee_actor toneIndigo
```

## Components

### REST API

- [Employee endpoints](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/controller/EmployeeController.java): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/controller/EmployeeController.java`
- [Leave endpoints](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/controller/LeaveController.java): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/controller/LeaveController.java`
- [API DTOs](https://github.com/shanthan-peshwaker/employee-leave-management/tree/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/dto): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/dto`
- [API error mapping](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/exception/GlobalExceptionHandler.java): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/exception/GlobalExceptionHandler.java`

### HR Workflows

- [Employee service](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/service/EmployeeService.java): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/service/EmployeeService.java`
- [Leave service](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/service/LeaveService.java): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/service/LeaveService.java`

### Persistence

- [Employee repository](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/EmployeeRepository.java): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/EmployeeRepository.java`
- [Leave request repository](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/LeaveRequestRepository.java): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/LeaveRequestRepository.java`
- [Leave balance repository](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/LeaveBalanceRepository.java): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/repository/LeaveBalanceRepository.java`
- [Employee records](https://github.com/shanthan-peshwaker/employee-leave-management/blob/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/entity/Employee.java): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/entity/Employee.java`
- [Leave domain records](https://github.com/shanthan-peshwaker/employee-leave-management/tree/main/hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/entity): `hrms-employee-leave-management/hrms/src/main/java/com/keka/hrms/entity`
- **Relational database**

### Other components

- **Employee / Manager**

## Connections

- Employee / Manager → Employee endpoints: sends requests
- Employee / Manager → Leave endpoints: sends requests
- Employee endpoints → Employee service: invokes
- Leave endpoints → Leave service: invokes
- Employee endpoints → API DTOs: accepts / returns
- Leave endpoints → API DTOs: accepts / returns
- Employee service → Employee repository: queries / saves
- Leave service → Employee repository: loads employees
- Leave service → Leave request repository: queries / saves
- Leave service → Leave balance repository: reads / updates
- Employee repository → Relational database: persists
- Leave request repository → Relational database: persists
- Leave balance repository → Relational database: persists
- Employee repository → Employee records: maps records
- Leave request repository → Leave domain records: maps records
- Leave balance repository → Leave domain records: maps records
