# priya-ghagare-programmer/employee-management-system-backend architecture

> Architecture diagram of the GitHub repository priya-ghagare-programmer/employee-management-system-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/priya-ghagare-programmer/employee-management-system-backend
- Repository: https://github.com/priya-ghagare-programmer/employee-management-system-backend

## Overview

This is a Spring Boot employee-management backend. A client calls REST endpoints for authentication and workforce operations; controllers delegate to services, which apply domain rules and use repositories for persistence. Major capabilities documented in the README include employee and department management, attendance, leave decisions, task tracking, and salary generation. The sampled code confirms detailed wiring for several of these flows; task implementation details were not sampled, so its internal links are omitted.

Main entry points: [`database.sql`](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/database.sql) (MySQL Database), [`src/main/java/com/ems/repository/EmployeeRepository.java`](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/EmployeeRepository.java) (Employee Repository), [`src/main/java/com/ems/service/EmployeeService.java`](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/EmployeeService.java) (Employee Management), [`src/main/java/com/ems/service/AuthService.java`](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/AuthService.java) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity"]
  node_auth_controller["Auth API"]
  node_auth_service["Authentication<br/>[AuthService.java]"]
end

subgraph group_people["People Management"]
  node_employee_controller["Employee API"]
  node_employee_service["Employee Management"]
  node_employee_mapper["Employee Mapper"]
  node_department_controller["Department API"]
  node_department_service["Department Management"]
end

subgraph group_operations["Workforce Operations"]
  node_attendance_controller["Attendance API"]
  node_attendance_service["Attendance Tracking"]
  node_leave_controller["Leave API"]
  node_leave_service["Leave Management<br/>[LeaveService.java]"]
  node_task_controller["Task API"]
  node_task_service["Task Management<br/>[TaskService.java]"]
  node_salary_controller["Salary API"]
  node_salary_service["Salary Generation<br/>[SalaryService.java]"]
end

subgraph group_persistence["Persistence"]
  node_user_repository["User Repository"]
  node_employee_repository["Employee Repository"]
  node_department_repository["Department Repository"]
  node_attendance_repository["Attendance Repository"]
  node_leave_repository["Leave Repository"]
  node_task_repository["Task Repository"]
  node_salary_repository["Salary Repository"]
  node_mysql[("MySQL Database<br/>[database.sql]")]
end

node_client(("API Client"))
node_application["Spring Boot App"]

node_client -->|"submits credentials"| node_auth_controller
node_client -->|"manages employees"| node_employee_controller
node_client -->|"manages departments"| node_department_controller
node_client -->|"marks attendance"| node_attendance_controller
node_client -->|"requests leave"| node_leave_controller
node_client -->|"manages tasks"| node_task_controller
node_client -->|"requests salary"| node_salary_controller
node_auth_controller -->|"delegates"| node_auth_service
node_auth_service -->|"looks up and saves users"| node_user_repository
node_auth_service -->|"checks employee profile"| node_employee_repository
node_auth_service -->|"registers employee"| node_employee_service
node_employee_controller -->|"delegates"| node_employee_service
node_employee_service -->|"maps employee data"| node_employee_mapper
node_employee_service -->|"reads and saves employees"| node_employee_repository
node_employee_service -->|"looks up department"| node_department_repository
node_department_controller -->|"delegates"| node_department_service
node_department_service -->|"reads and writes departments"| node_department_repository
node_attendance_controller -->|"delegates"| node_attendance_service
node_attendance_service -->|"looks up employee"| node_employee_repository
node_attendance_service -->|"reads and saves attendance"| node_attendance_repository
node_leave_controller -->|"delegates"| node_leave_service
node_leave_service -->|"looks up employee"| node_employee_repository
node_leave_service -->|"reads and saves leave"| node_leave_repository
node_salary_controller -->|"delegates"| node_salary_service
node_salary_service -->|"looks up employee"| node_employee_repository
node_salary_service -->|"reads attendance"| node_attendance_repository
node_salary_service -->|"saves salary"| node_salary_repository
node_user_repository -->|"persists users"| node_mysql
node_employee_repository -->|"persists employees"| node_mysql
node_department_repository -->|"persists departments"| node_mysql
node_attendance_repository -->|"persists attendance"| node_mysql
node_leave_repository -->|"persists leave"| node_mysql
node_task_repository -->|"persists tasks"| node_mysql
node_salary_repository -->|"persists salaries"| node_mysql

click node_application "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/EmployeeManagementSystemApplication.java"
click node_auth_controller "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/AuthController.java"
click node_auth_service "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/AuthService.java"
click node_user_repository "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/UserRepository.java"
click node_employee_controller "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/EmployeeController.java"
click node_employee_service "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/EmployeeService.java"
click node_employee_mapper "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/mapper/EmployeeMapper.java"
click node_department_controller "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/DepartmentController.java"
click node_department_service "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/DepartmentService.java"
click node_attendance_controller "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/AttendanceController.java"
click node_attendance_service "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/AttendanceService.java"
click node_leave_controller "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/LeaveController.java"
click node_leave_service "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/LeaveService.java"
click node_task_controller "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/TaskController.java"
click node_task_service "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/TaskService.java"
click node_salary_controller "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/SalaryController.java"
click node_salary_service "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/SalaryService.java"
click node_employee_repository "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/EmployeeRepository.java"
click node_department_repository "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/DepartmentRepository.java"
click node_attendance_repository "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/AttendanceRepository.java"
click node_leave_repository "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/LeaveRepository.java"
click node_task_repository "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/TaskRepository.java"
click node_salary_repository "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/SalaryRepository.java"
click node_mysql "https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/database.sql"

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_auth_controller,node_auth_service,node_client toneBlue
class node_employee_controller,node_employee_service,node_employee_mapper,node_department_controller,node_department_service toneAmber
class node_attendance_controller,node_attendance_service,node_leave_controller,node_leave_service,node_task_controller,node_task_service,node_salary_controller,node_salary_service toneMint
class node_user_repository,node_employee_repository,node_department_repository,node_attendance_repository,node_leave_repository,node_task_repository,node_salary_repository,node_mysql toneRose
class node_application toneTeal
```

## Components

### Identity

- [Auth API](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/AuthController.java): `src/main/java/com/ems/controller/AuthController.java`
- [Authentication](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/AuthService.java): `src/main/java/com/ems/service/AuthService.java`

### People Management

- [Employee API](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/EmployeeController.java): `src/main/java/com/ems/controller/EmployeeController.java`
- [Employee Management](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/EmployeeService.java): `src/main/java/com/ems/service/EmployeeService.java`
- [Employee Mapper](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/mapper/EmployeeMapper.java): `src/main/java/com/ems/mapper/EmployeeMapper.java`
- [Department API](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/DepartmentController.java): `src/main/java/com/ems/controller/DepartmentController.java`
- [Department Management](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/DepartmentService.java): `src/main/java/com/ems/service/DepartmentService.java`

### Workforce Operations

- [Attendance API](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/AttendanceController.java): `src/main/java/com/ems/controller/AttendanceController.java`
- [Attendance Tracking](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/AttendanceService.java): `src/main/java/com/ems/service/AttendanceService.java`
- [Leave API](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/LeaveController.java): `src/main/java/com/ems/controller/LeaveController.java`
- [Leave Management](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/LeaveService.java): `src/main/java/com/ems/service/LeaveService.java`
- [Task API](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/TaskController.java): `src/main/java/com/ems/controller/TaskController.java`
- [Task Management](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/TaskService.java): `src/main/java/com/ems/service/TaskService.java`
- [Salary API](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/controller/SalaryController.java): `src/main/java/com/ems/controller/SalaryController.java`
- [Salary Generation](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/service/SalaryService.java): `src/main/java/com/ems/service/SalaryService.java`

### Persistence

- [User Repository](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/UserRepository.java): `src/main/java/com/ems/repository/UserRepository.java`
- [Employee Repository](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/EmployeeRepository.java): `src/main/java/com/ems/repository/EmployeeRepository.java`
- [Department Repository](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/DepartmentRepository.java): `src/main/java/com/ems/repository/DepartmentRepository.java`
- [Attendance Repository](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/AttendanceRepository.java): `src/main/java/com/ems/repository/AttendanceRepository.java`
- [Leave Repository](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/LeaveRepository.java): `src/main/java/com/ems/repository/LeaveRepository.java`
- [Task Repository](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/TaskRepository.java): `src/main/java/com/ems/repository/TaskRepository.java`
- [Salary Repository](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/repository/SalaryRepository.java): `src/main/java/com/ems/repository/SalaryRepository.java`
- [MySQL Database](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/database.sql): `database.sql`

### Other components

- **API Client**
- [Spring Boot App](https://github.com/priya-ghagare-programmer/employee-management-system-backend/blob/master/src/main/java/com/ems/EmployeeManagementSystemApplication.java): `src/main/java/com/ems/EmployeeManagementSystemApplication.java`

## Connections

- API Client → Auth API: submits credentials
- API Client → Employee API: manages employees
- API Client → Department API: manages departments
- API Client → Attendance API: marks attendance
- API Client → Leave API: requests leave
- API Client → Task API: manages tasks
- API Client → Salary API: requests salary
- Auth API → Authentication: delegates
- Authentication → User Repository: looks up and saves users
- Authentication → Employee Repository: checks employee profile
- Authentication → Employee Management: registers employee
- Employee API → Employee Management: delegates
- Employee Management → Employee Mapper: maps employee data
- Employee Management → Employee Repository: reads and saves employees
- Employee Management → Department Repository: looks up department
- Department API → Department Management: delegates
- Department Management → Department Repository: reads and writes departments
- Attendance API → Attendance Tracking: delegates
- Attendance Tracking → Employee Repository: looks up employee
- Attendance Tracking → Attendance Repository: reads and saves attendance
- Leave API → Leave Management: delegates
- Leave Management → Employee Repository: looks up employee
- Leave Management → Leave Repository: reads and saves leave
- Salary API → Salary Generation: delegates
- Salary Generation → Employee Repository: looks up employee
- Salary Generation → Attendance Repository: reads attendance
- Salary Generation → Salary Repository: saves salary
- User Repository → MySQL Database: persists users
- Employee Repository → MySQL Database: persists employees
- Department Repository → MySQL Database: persists departments
- Attendance Repository → MySQL Database: persists attendance
- Leave Repository → MySQL Database: persists leave
- Task Repository → MySQL Database: persists tasks
- Salary Repository → MySQL Database: persists salaries
