All projects
CompletedWeb app · 2026
HR Management System
A Flask and MySQL application for managing employees, attendance, payroll, leave and recruitment across 16 related tables.

Overview
A web application that gives HR administrators one place to manage staff records. It runs on a relational database designed from an entity-relationship diagram of 16 tables: departments, jobs, employees, attendance, leave, payroll, salaries, benefits, recruitment, performance reviews and training.
The problem
Staff records, attendance, payroll and leave are often kept in separate files, which makes them hard to keep consistent. A single relational database keeps each record linked to the right employee, department and job.
My contribution
- Designed and created the HR database: 16 tables built from the ERD, with their keys, relationships and constraints.
- Worked on the user interface: the dashboard, navigation and record-management screens.
Built by the wider team
- Administrator sign-in with CSRF protection
- Create, edit, delete and search for every table
- CSV import and export, including an all-sections ZIP
- Light and dark themes and automated tests
Key features
- Overview dashboard with headcount, department breakdown and pending leave
- Navigation grouped into five areas: employees, attendance & leave, payroll & benefits, recruitment, performance
- Forms with dropdowns for linked records
- Net salary calculated from basic salary, allowances and deductions
Implementation highlights
- One schema runs on MySQL and on SQLite for local previews
- Integrity rules: unique emails, one attendance record per employee per day, valid date ranges
- Foreign-key deletes are restricted, so history is preserved
Screenshots
Captured from a local run with fictional demo data.
- (open full-size image in a new tab)

Overview dashboard - (open full-size image in a new tab)

Employee records - (open full-size image in a new tab)

Add record form - (open full-size image in a new tab)

Payroll