# charan-1707/employee-management-system architecture

> Architecture diagram of the GitHub repository charan-1707/employee-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/charan-1707/employee-management-system
- Repository: https://github.com/charan-1707/employee-management-system

## Overview

This is a Spring Boot REST API for employee record management. Clients send validated create, read, update, partial-update, and delete requests through the controller; the service applies those operations, maps between DTOs and entities, and delegates persistence to the Spring Data repository. Responses are standardized by response advice, while centralized exception handling formats errors. The README documents MySQL persistence. Source excerpts show the main request and service flow; database wiring details are not sampled, so that connection is based on the README’s architecture description.

Main entry points: [`src/main/java/com/charan/employeemanagementsystem/controller/EmployeeController.java`](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/controller/EmployeeController.java) (Employee Controller), [`src/main/java/com/charan/employeemanagementsystem/service/EmployeeService.java`](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/service/EmployeeService.java) (Employee Service), [`src/main/java/com/charan/employeemanagementsystem/advices/GlobalExceptionHandler.java`](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/advices/GlobalExceptionHandler.java) (Exception Handler), [`src/main/java/com/charan/employeemanagementsystem/repository/EmployeeRepository.java`](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/repository/EmployeeRepository.java) (Employee Repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_controller["Employee Controller"]
  node_response_advice["Response Wrapper"]
  node_api_response["API Response<br/>[ApiResponse.java]"]
end

subgraph group_service["Employee Services"]
  node_service_layer["Employee Service"]
  node_model_mapper["Mapper Configuration"]
end

subgraph group_data["Employee Data"]
  node_employee_dto["Employee DTO<br/>[EmployeeDTO.java]"]
  node_employee_entity["Employee Entity"]
  node_repository["Employee Repository"]
end

subgraph group_validation["Validation And Errors"]
  node_role_annotation["Role Constraint"]
  node_role_validator["Role Validator"]
  node_exception_handler["Exception Handler"]
  node_api_error["API Error<br/>[ApiError.java]"]
  node_not_found["Not Found Exception"]
end

node_client(("API Client"))
node_mysql[("MySQL Database")]

node_client -->|"sends requests"| node_controller
node_controller -->|"delegates operations"| node_service_layer
node_controller -->|"validates input"| node_employee_dto
node_service_layer -->|"reads and writes"| node_repository
node_service_layer -->|"maps to and from"| node_employee_dto
node_service_layer -->|"maps to and from"| node_employee_entity
node_repository -->|"persists"| node_employee_entity
node_repository -->|"persists via JPA"| node_mysql
node_employee_dto -->|"applies constraint"| node_role_annotation
node_role_annotation -->|"registers validator"| node_role_validator
node_controller -->|"errors handled by advice"| node_exception_handler
node_service_layer -->|"raises when absent"| node_not_found
node_controller -->|"raises when absent"| node_not_found
node_exception_handler -->|"handles exception"| node_not_found
node_exception_handler -->|"builds error"| node_api_error
node_exception_handler -->|"wraps error"| node_api_response
node_response_advice -->|"wraps response"| node_api_response
node_controller -->|"returns HTTP response"| node_client

click node_controller "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/controller/EmployeeController.java"
click node_response_advice "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/advices/GlobalResponseHandler.java"
click node_api_response "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/advices/ApiResponse.java"
click node_service_layer "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/service/EmployeeService.java"
click node_model_mapper "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/config/ModelMapperConfig.java"
click node_employee_dto "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/dto/EmployeeDTO.java"
click node_employee_entity "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/entity/EmployeeEntity.java"
click node_repository "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/repository/EmployeeRepository.java"
click node_role_annotation "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/annotations/EmployeeRoleValidation.java"
click node_role_validator "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/annotations/EmployeeRoleValidator.java"
click node_exception_handler "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/advices/GlobalExceptionHandler.java"
click node_api_error "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/advices/ApiError.java"
click node_not_found "https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/exceptions/ResourceNotFoundException.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_controller,node_response_advice,node_api_response,node_client toneBlue
class node_service_layer,node_model_mapper,node_mysql toneAmber
class node_employee_dto,node_employee_entity,node_repository toneMint
class node_role_annotation,node_role_validator,node_exception_handler,node_api_error,node_not_found toneRose
```

## Components

### REST API

- [Employee Controller](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/controller/EmployeeController.java): `src/main/java/com/charan/employeemanagementsystem/controller/EmployeeController.java`
- [Response Wrapper](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/advices/GlobalResponseHandler.java): `src/main/java/com/charan/employeemanagementsystem/advices/GlobalResponseHandler.java`
- [API Response](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/advices/ApiResponse.java): `src/main/java/com/charan/employeemanagementsystem/advices/ApiResponse.java`

### Employee Services

- [Employee Service](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/service/EmployeeService.java): `src/main/java/com/charan/employeemanagementsystem/service/EmployeeService.java`
- [Mapper Configuration](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/config/ModelMapperConfig.java): `src/main/java/com/charan/employeemanagementsystem/config/ModelMapperConfig.java`

### Employee Data

- [Employee DTO](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/dto/EmployeeDTO.java): `src/main/java/com/charan/employeemanagementsystem/dto/EmployeeDTO.java`
- [Employee Entity](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/entity/EmployeeEntity.java): `src/main/java/com/charan/employeemanagementsystem/entity/EmployeeEntity.java`
- [Employee Repository](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/repository/EmployeeRepository.java): `src/main/java/com/charan/employeemanagementsystem/repository/EmployeeRepository.java`

### Validation And Errors

- [Role Constraint](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/annotations/EmployeeRoleValidation.java): `src/main/java/com/charan/employeemanagementsystem/annotations/EmployeeRoleValidation.java`
- [Role Validator](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/annotations/EmployeeRoleValidator.java): `src/main/java/com/charan/employeemanagementsystem/annotations/EmployeeRoleValidator.java`
- [Exception Handler](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/advices/GlobalExceptionHandler.java): `src/main/java/com/charan/employeemanagementsystem/advices/GlobalExceptionHandler.java`
- [API Error](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/advices/ApiError.java): `src/main/java/com/charan/employeemanagementsystem/advices/ApiError.java`
- [Not Found Exception](https://github.com/charan-1707/employee-management-system/blob/main/src/main/java/com/charan/employeemanagementsystem/exceptions/ResourceNotFoundException.java): `src/main/java/com/charan/employeemanagementsystem/exceptions/ResourceNotFoundException.java`

### Other components

- **API Client**
- **MySQL Database**

## Connections

- API Client → Employee Controller: sends requests (evidence: `README.md`)
- Employee Controller → Employee Service: delegates operations (evidence: `src/main/java/com/charan/employeemanagementsystem/controller/EmployeeController.java`)
- Employee Controller → Employee DTO: validates input (evidence: `src/main/java/com/charan/employeemanagementsystem/controller/EmployeeController.java`)
- Employee Service → Employee Repository: reads and writes (evidence: `src/main/java/com/charan/employeemanagementsystem/service/EmployeeService.java`)
- Employee Service → Employee DTO: maps to and from (evidence: `src/main/java/com/charan/employeemanagementsystem/service/EmployeeService.java`)
- Employee Service → Employee Entity: maps to and from (evidence: `src/main/java/com/charan/employeemanagementsystem/service/EmployeeService.java`)
- Employee Repository → Employee Entity: persists (evidence: `src/main/java/com/charan/employeemanagementsystem/repository/EmployeeRepository.java`)
- Employee Repository → MySQL Database: persists via JPA (evidence: `README.md`)
- Employee DTO → Role Constraint: applies constraint (evidence: `src/main/java/com/charan/employeemanagementsystem/dto/EmployeeDTO.java`)
- Role Constraint → Role Validator: registers validator (evidence: `src/main/java/com/charan/employeemanagementsystem/annotations/EmployeeRoleValidation.java`)
- Employee Controller → Exception Handler: errors handled by advice (evidence: `src/main/java/com/charan/employeemanagementsystem/advices/GlobalExceptionHandler.java`)
- Employee Service → Not Found Exception: raises when absent (evidence: `src/main/java/com/charan/employeemanagementsystem/service/EmployeeService.java`)
- Employee Controller → Not Found Exception: raises when absent (evidence: `src/main/java/com/charan/employeemanagementsystem/controller/EmployeeController.java`)
- Exception Handler → Not Found Exception: handles exception (evidence: `src/main/java/com/charan/employeemanagementsystem/advices/GlobalExceptionHandler.java`)
- Exception Handler → API Error: builds error (evidence: `src/main/java/com/charan/employeemanagementsystem/advices/GlobalExceptionHandler.java`)
- Exception Handler → API Response: wraps error (evidence: `src/main/java/com/charan/employeemanagementsystem/advices/GlobalExceptionHandler.java`)
- Response Wrapper → API Response: wraps response (evidence: `src/main/java/com/charan/employeemanagementsystem/advices/GlobalResponseHandler.java`)
- Employee Controller → API Client: returns HTTP response (evidence: `README.md`)
