hoangsonww / hoangsonww/Employee-Management-Fullstack-App
Feature: Employee Performance Analytics Dashboard
- Dominant language
- Java
- Stars
- 80
- Forks
- 82
- PR merge metrics
- No merged PRs in 30d
Description
## 📌 Summary
Add a **Performance Analytics Dashboard** to visualize key employee metrics such as productivity, department growth, retention, and turnover. The dashboard will provide managers and HR teams with **actionable insights** beyond the current CRUD and simple stats.
---
## 🎯 Motivation
Right now, the system provides only **basic CRUD** for employees/departments and some visualizations. Real-world enterprises need **analytics** to drive decisions:
* Which departments are growing fastest?
* Which employees are high performers?
* What’s the monthly hiring vs attrition trend?
This feature will make the app a **data-driven management tool** instead of just a record keeper.
---
## ✅ Acceptance Criteria
* [ ] New backend endpoints under `/api/analytics` to expose aggregated data:
* Employee count by department
* New hires per month
* Turnover rate per quarter
* Average tenure
* [ ] Frontend charts (using `react-chartjs-2`) to visualize:
* Line chart: employee growth over time
* Pie chart: employees by department
* Bar chart: hires vs exits
* [ ] Dashboard page restricted to **Managers** and **HR** roles (ties in with RBAC).
* [ ] Unit & integration tests for new backend endpoints.
* [ ] Ensure responsiveness and dark mode support.
---
## 🚀 Implementation Notes
* **Backend (Spring Boot)**
* Use `Spring Data JPA` aggregate queries (`COUNT`, `GROUP BY`, `DATE_TRUNC`) for stats.
* Add `AnalyticsController.java` to expose REST endpoints.
* **Frontend (React)**
* Create `AnalyticsDashboard.js` component.
* Fetch data via `axios` from `/api/analytics/*`.
* Display in a grid layout with charts and KPI cards.
---
## 🔒 Security
* Endpoints should check user role before returning sensitive analytics.
* Ensure no PII (e.g., salary, personal details) is leaked unless explicitly allowed.
---
Contributor guide
Assessment
This issue has not been assessed yet.