05HR WORKFLOW AUTOMATION

Leave Management System.

An employee leave application connecting request submission, personal history, and administrative decisions.

CONTRIBUTION

Frontend, API & database development

TYPE

Workflow application

TECHNOLOGY
ReactExpress.jsPostgreSQLTailwind CSS
Leave Management System
Original Leave Management System interface from Aaron’s published portfolio
Original application screenshot · published portfolioOpen full image

01 / OVERVIEW

Less friction in the approval flow.

LeaveFlow is a separated React frontend and Express backend. Employees submit requests and review their own history, while administrative endpoints provide an overview and status decisions.

My contribution

Frontend, API & database development, bringing the interface, business workflow, and data layer together.

02 / THE BUSINESS REQUIREMENT

The problem to solve.

A leave request needs to move from employee submission to an administrative decision with clear ownership. Employees should see their own requests, and completed decisions should be handled deliberately.

03 / THE APPLICATION

What the system does.

Request submission

Create a request with leave type, start and end dates, and a reason.

Personal request history

Retrieve requests for the authenticated user, ordered by creation date.

Administrative review

Review employee requests and decide between pending, approved, and rejected states.

Authenticated API

Bearer token verification and dedicated administrative middleware protect request routes.

04 / TECHNICAL ARCHITECTURE

How the layers connect.

05 / ENGINEERING DECISIONS

Deliberate choices.

01

Separate the interface from the API

Independent frontend and backend repositories keep presentation and application logic distinct.

02

Scope history to the authenticated user

The personal-history query uses the user identity supplied by authentication middleware, instead of accepting an arbitrary user identifier.

03

Use parameterized queries

The controller passes query values separately from SQL text for request creation, lookup, and updates.

06 / THE TECHNICAL CHALLENGE

Making an approval decision explicit.

Unrestricted status changes can make the request lifecycle ambiguous.

THE APPROACH

The status controller accepts a defined set of statuses, checks whether the request exists, and rejects changes to requests that have already been approved or rejected. Concurrent-update behavior remains a consideration for further hardening.

07 / THE RESULT

A connected application.

Employees can submit requests and review their own history. Administrative review uses a defined set of statuses, with checks for missing requests and decisions that have already been finalized.

Public sign-in interface. An authorized account is required to access employee and administrative workflows.

About this case study’s sources

React/Express/PostgreSQL dependencies and request behavior checked against both LeaveFlow repositories. Screenshot from the original portfolio; it may show an earlier interface.