# aditi-sen-core/employee-attendance-system architecture

> Architecture diagram of the GitHub repository aditi-sen-core/employee-attendance-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aditi-sen-core/employee-attendance-system
- Repository: https://github.com/aditi-sen-core/employee-attendance-system

## Overview

The system supports employee and HR workflows: employees authenticate, track attendance, apply for and review leave, and manage profiles; HR manages employees and attendance, decides leave requests, and views reports. The React client routes role-protected pages through domain API modules to Spring REST controllers, services, and repositories backed by MySQL. JWT authentication and role-based access protect the API. The README documents reports and analytics; their page is represented, but report-generation details were not sampled.

Main entry points: [`frontend/src/api/axios.js`](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/axios.js) (HTTP client), [`frontend/src/pages`](https://github.com/aditi-sen-core/employee-attendance-system/tree/main/frontend/src/pages) (Role-based pages), [`backend/src/main/java/com/attendance/backend/controller/AuthController.java`](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/controller/AuthController.java) (Authentication endpoint), [`backend/src/main/java/com/attendance/backend/repository/EmployeeRepository.java`](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/repository/EmployeeRepository.java) (Employee records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React application"]
  node_ui["Role-based pages"]
  node_routes["Protected routing<br/>[AppRoutes.jsx]"]
  node_authctx["Auth context<br/>[AuthContext.jsx]"]
  node_authapi["Auth API<br/>[authApi.js]"]
  node_attendanceapi["Attendance API<br/>[attendanceApi.js]"]
  node_leaveapi["Leave API<br/>[leaveApi.js]"]
  node_employeeapi["Employee API<br/>[employeeApi.js]"]
  node_http["HTTP client<br/>[axios.js]"]
end

subgraph group_identity["Identity and access"]
  node_authcontroller["Authentication endpoint"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_security["Security filter and rules"]
  node_securityconfig["Security configuration"]
end

subgraph group_workflows["Attendance and leave"]
  node_attendancecontroller["Attendance endpoint"]
  node_attendanceservice["Attendance rules and stats"]
  node_leavectrl["Leave endpoint"]
  node_leaveservice["Leave workflow<br/>[LeaveService.java]"]
  node_reports["Reports and analytics<br/>[Reports.jsx]"]
  node_attendances[("Attendance records")]
  node_leaves[("Leave records")]
end

subgraph group_records["Employee records"]
  node_employeectrl["Employee endpoint"]
  node_employeeservice["Employee management"]
  node_employees[("Employee records")]
end

node_employee(("Employee"))
node_hr(("HR manager"))
node_mysql[("MySQL")]

node_employee -->|"opens portal"| node_routes
node_hr -->|"opens portal"| node_routes
node_routes -->|"routes by role"| node_ui
node_ui -->|"uses session"| node_authctx
node_authctx -->|"requests login"| node_authapi
node_authapi -->|"sends request"| node_http
node_http -->|"calls REST"| node_authcontroller
node_authcontroller -->|"finds account"| node_employees
node_authcontroller -->|"creates token"| node_jwt
node_jwt -->|"returns token"| node_authcontroller
node_http -->|"sends JWT"| node_security
node_securityconfig -->|"configures filter"| node_security
node_ui -->|"attendance actions"| node_attendanceapi
node_ui -->|"leave actions"| node_leaveapi
node_ui -->|"employee actions"| node_employeeapi
node_attendanceapi -->|"sends request"| node_http
node_leaveapi -->|"sends request"| node_http
node_employeeapi -->|"sends request"| node_http
node_http -->|"calls REST"| node_attendancecontroller
node_http -->|"calls REST"| node_leavectrl
node_http -->|"calls REST"| node_employeectrl
node_attendancecontroller -->|"dispatches"| node_attendanceservice
node_attendanceservice -->|"reads and writes"| node_attendances
node_leavectrl -->|"dispatches"| node_leaveservice
node_leaveservice -->|"reads and writes"| node_leaves
node_leaveservice -->|"checks balance"| node_employees
node_employeectrl -->|"dispatches"| node_employeeservice
node_employeeservice -->|"reads and writes"| node_employees
node_employees -->|"persists records"| node_mysql
node_attendances -->|"persists records"| node_mysql
node_leaves -->|"persists records"| node_mysql
node_ui -->|"HR reporting"| node_reports

click node_ui "https://github.com/aditi-sen-core/employee-attendance-system/tree/main/frontend/src/pages"
click node_routes "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/routes/AppRoutes.jsx"
click node_authctx "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/context/AuthContext.jsx"
click node_authapi "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/authApi.js"
click node_attendanceapi "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/attendanceApi.js"
click node_leaveapi "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/leaveApi.js"
click node_employeeapi "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/employeeApi.js"
click node_http "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/axios.js"
click node_authcontroller "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/controller/AuthController.java"
click node_jwt "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/security/JwtService.java"
click node_security "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/security/JwtAuthenticationFilter.java"
click node_securityconfig "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/config/SecurityConfig.java"
click node_attendancecontroller "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/controller/AttendanceController.java"
click node_attendanceservice "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/service/AttendanceService.java"
click node_leavectrl "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/controller/LeaveController.java"
click node_leaveservice "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/service/LeaveService.java"
click node_reports "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/pages/hr/Reports.jsx"
click node_employeectrl "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/controller/EmployeeController.java"
click node_employeeservice "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/service/EmployeeService.java"
click node_employees "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/repository/EmployeeRepository.java"
click node_attendances "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/repository/AttendanceRepository.java"
click node_leaves "https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/repository/LeaveRepository.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_ui,node_routes,node_authctx,node_authapi,node_attendanceapi,node_leaveapi,node_employeeapi,node_http toneBlue
class node_authcontroller,node_jwt,node_security,node_securityconfig,node_mysql toneAmber
class node_attendancecontroller,node_attendanceservice,node_leavectrl,node_leaveservice,node_reports,node_attendances,node_leaves toneMint
class node_employeectrl,node_employeeservice,node_employees toneRose
class node_employee,node_hr toneIndigo
```

## Components

### React application

- [Role-based pages](https://github.com/aditi-sen-core/employee-attendance-system/tree/main/frontend/src/pages): `frontend/src/pages`
- [Protected routing](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/routes/AppRoutes.jsx): `frontend/src/routes/AppRoutes.jsx`
- [Auth context](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Auth API](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/authApi.js): `frontend/src/api/authApi.js`
- [Attendance API](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/attendanceApi.js): `frontend/src/api/attendanceApi.js`
- [Leave API](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/leaveApi.js): `frontend/src/api/leaveApi.js`
- [Employee API](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/employeeApi.js): `frontend/src/api/employeeApi.js`
- [HTTP client](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/api/axios.js): `frontend/src/api/axios.js`

### Identity and access

- [Authentication endpoint](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/controller/AuthController.java): `backend/src/main/java/com/attendance/backend/controller/AuthController.java`
- [JWT service](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/security/JwtService.java): `backend/src/main/java/com/attendance/backend/security/JwtService.java`
- [Security filter and rules](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/security/JwtAuthenticationFilter.java): `backend/src/main/java/com/attendance/backend/security/JwtAuthenticationFilter.java`
- [Security configuration](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/config/SecurityConfig.java): `backend/src/main/java/com/attendance/backend/config/SecurityConfig.java`

### Attendance and leave

- [Attendance endpoint](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/controller/AttendanceController.java): `backend/src/main/java/com/attendance/backend/controller/AttendanceController.java`
- [Attendance rules and stats](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/service/AttendanceService.java): `backend/src/main/java/com/attendance/backend/service/AttendanceService.java`
- [Leave endpoint](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/controller/LeaveController.java): `backend/src/main/java/com/attendance/backend/controller/LeaveController.java`
- [Leave workflow](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/service/LeaveService.java): `backend/src/main/java/com/attendance/backend/service/LeaveService.java`
- [Reports and analytics](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/frontend/src/pages/hr/Reports.jsx): `frontend/src/pages/hr/Reports.jsx`
- [Attendance records](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/repository/AttendanceRepository.java): `backend/src/main/java/com/attendance/backend/repository/AttendanceRepository.java`
- [Leave records](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/repository/LeaveRepository.java): `backend/src/main/java/com/attendance/backend/repository/LeaveRepository.java`

### Employee records

- [Employee endpoint](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/controller/EmployeeController.java): `backend/src/main/java/com/attendance/backend/controller/EmployeeController.java`
- [Employee management](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/service/EmployeeService.java): `backend/src/main/java/com/attendance/backend/service/EmployeeService.java`
- [Employee records](https://github.com/aditi-sen-core/employee-attendance-system/blob/main/backend/src/main/java/com/attendance/backend/repository/EmployeeRepository.java): `backend/src/main/java/com/attendance/backend/repository/EmployeeRepository.java`

### Other components

- **Employee**
- **HR manager**
- **MySQL**

## Connections

- Employee → Protected routing: opens portal
- HR manager → Protected routing: opens portal
- Protected routing → Role-based pages: routes by role
- Role-based pages → Auth context: uses session
- Auth context → Auth API: requests login
- Auth API → HTTP client: sends request
- HTTP client → Authentication endpoint: calls REST
- Authentication endpoint → Employee records: finds account
- Authentication endpoint → JWT service: creates token
- JWT service → Authentication endpoint: returns token
- HTTP client → Security filter and rules: sends JWT
- Security configuration → Security filter and rules: configures filter
- Role-based pages → Attendance API: attendance actions
- Role-based pages → Leave API: leave actions
- Role-based pages → Employee API: employee actions
- Attendance API → HTTP client: sends request
- Leave API → HTTP client: sends request
- Employee API → HTTP client: sends request
- HTTP client → Attendance endpoint: calls REST
- HTTP client → Leave endpoint: calls REST
- HTTP client → Employee endpoint: calls REST
- Attendance endpoint → Attendance rules and stats: dispatches
- Attendance rules and stats → Attendance records: reads and writes
- Leave endpoint → Leave workflow: dispatches
- Leave workflow → Leave records: reads and writes
- Leave workflow → Employee records: checks balance
- Employee endpoint → Employee management: dispatches
- Employee management → Employee records: reads and writes
- Employee records → MySQL: persists records
- Attendance records → MySQL: persists records
- Leave records → MySQL: persists records
- Role-based pages → Reports and analytics: HR reporting
