Back to Projects

ManagePro — HRMS Platform

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.

FastAPI
PostgreSQL
Supabase
JWT Auth
RBAC
React

The Problem

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.

Real API Integration

Fully connected frontend with live backend data — no mock layers.

All frontend modules consume live FastAPI endpoints through a centralized API client.

  • JWT stored and attached via Authorization headers
  • Dynamic role-based UI rendering from backend responses
  • Attendance, employees, and leave data fetched in real-time
  • Error states and loading states handled at component level

This ensures consistency between backend rules and frontend behavior, eliminating data drift or UI-level bypasses.

System Architecture

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.

  • FastAPI routers for modular endpoints
  • Service layer for domain logic
  • Supabase PostgreSQL for persistence
  • JWT-based authentication with role enforcement

Core Features

• 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 & Security

Authentication is handled using JWT tokens containing user role and identity metadata.

  • Password hashing using bcrypt
  • Role-based route protection
  • Token-based session handling

Key Engineering Decisions

• 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

Challenges

• Maintaining consistent role enforcement across endpoints

• Designing clean separation between API and business logic

• Handling edge cases like overlapping leaves and attendance gaps

Limitations

• Some frontend pages still rely on mock data instead of live APIs

• Limited automated test coverage

• No analytics dashboard yet

What I Learned

✓ Designing scalable backend architectures

✓ Implementing JWT-based authentication

✓ Structuring real-world business logic in services

✓ Building role-secured APIs