A modular HR management system handling employee lifecycle, attendance, leave workflows and payroll — built with FastAPI, Supabase and React with strict role-based access control.
Traditional HR systems are fragmented — employee data, attendance, and leave workflows are often handled across disconnected tools, leading to inefficiency and poor visibility.
The goal was to design a **single backend system** that enforces strict role-based control while supporting real-world HR workflows.
Fully connected frontend with live backend data — no mock layers.
All frontend modules consume live FastAPI endpoints through a centralized API client.
This ensures consistency between backend rules and frontend behavior, eliminating data drift or UI-level bypasses.
Built with clear separation between API, business logic and data.
The backend follows a **service-layer architecture**, isolating business rules from API routes to improve maintainability and scale.
• Employee lifecycle management (create, update, deactivate)
• Attendance system with check-in / check-out + work hour calculation
• Leave workflow with approval pipeline
• Payroll generation based on attendance data
• Role-based access (Admin / HR / Employee)
Authentication is handled using JWT tokens containing user role and identity metadata.
• Used **service-layer pattern** to avoid fat route handlers
• Enforced **role validation at backend**, not just frontend
• Designed modules independently (auth, employees, attendance, leaves)
• Computed work hours dynamically during checkout
• Maintaining consistent role enforcement across endpoints
• Designing clean separation between API and business logic
• Handling edge cases like overlapping leaves and attendance gaps
• Some frontend pages still rely on mock data instead of live APIs
• Limited automated test coverage
• No analytics dashboard yet
✓ Designing scalable backend architectures
✓ Implementing JWT-based authentication
✓ Structuring real-world business logic in services
✓ Building role-secured APIs