Leave Request System
Leave requests, approvals and balances for Nawroz Telecom — in one place instead of an email chain.
Overview
An internal tool for booking time off. Employees request leave and see what they have left; managers review everything waiting on them in one queue; HR gets the records and reports without chasing anyone.
Built with a team of four over about three months.
The problem
Time off was being requested and approved ad hoc, which made balances hard to trust and left managers with no single place to see what needed a decision.
What I built
One app with two sides to it — a simple request-and-track view for employees, and a review queue with reporting for managers and HR. Balances update themselves, so nobody is reconciling spreadsheets.
Tech stack
- Built with
- React, Vite, Tailwind CSS, TanStack Query, Firebase
Key features
Book time off in a couple of clicks
Employees pick dates, say why, and attach anything needed. Their remaining balance is on the same screen, so there's no guessing before asking.
Requesting time off One queue for managers
Everything waiting on a decision sits in a single list, with the person's history and remaining allowance alongside it.
The manager's queue — every request and where it stands Balances that look after themselves
Allowances update as leave is approved, so what an employee sees and what HR sees are always the same number.
Allowance types and balances Reports HR can actually use
Leave and allowance reports across the whole company — searchable by person, narrowed by filters, and exported as a spreadsheet when someone above HR wants the numbers. The allowance report carries entitlement, carry-over and remaining side by side.
Every leave record in one place — searchable, filterable, and exportable as a spreadsheet. The allowance report shows entitlement, carry-over and what's left, per person. Nobody has to chase
Every step sends an email, and an approver can decide straight from it without opening the system. The wording of each one is a template HR edits in the app rather than a string in the code.
Each step has its own email template, edited in the app rather than in code. Rules the company sets once
The weekend is Friday and Saturday here, not Saturday and Sunday, so the working week, the working hours and the day the week starts on are all settings. So is what happens when an approver never answers: rather than leaving the request hanging, it is rejected automatically once the leave has started.
Weekend days, working hours, and what happens when nobody answers — set once, for the whole company. Starting a new team quickly
Approvers, departments and job titles are set up in one place, approval paths can be assigned for a fixed period to cover someone being away, and employees and their leave history come in from a spreadsheet rather than being typed one at a time.
Approvers, departments and job titles, kept in one place.
1/3