UCC Borrowing System

Shipped

A QR-based lab equipment borrowing system for a multi-campus university — built to run entirely on a local network, with a walk-in fallback for students without a phone.

ReactViteTailwind CSSLucide ReactSweetAlert2PHPMySQL

The Problem

The assignment was to digitize a manual lab equipment borrowing process that ran entirely on paper — students filled out physical borrowing slips by hand for every transaction. Our proposal r

The Approach

Built as a decoupled system — a React (Vite) frontend with Tailwind and Lucide icons, talking to a vanilla PHP backend over a custom API wrapper, with MySQL handling relational data across it

The Outcome

Shipped as a full-stack, multi-role system (Student, Lab Admin, Super Admin) covering the complete equipment lifecycle — QR-based check-out, walk-in fallback, condition-graded returns, overdu

Critical Challenges

Multi-campus data isolation without breaking Super Admin visibility

Every record fetch or mutation requires a branch_id, but Super Admins need to move between campuses without ever cross-contaminating a transaction — like scanning a student at one campus and

POS-style hardware scanning with a graceful fallback for unregistered students

The walk-in flow needed to stay fast even when a scanned student wasn't in the database yet. Instead of a dead-end error, the processStudentID callback detects "not found" responses and immed

Reconciling asset state during bulk returns

A return isn't a simple boolean; items can come back Good, Damaged, or Lost, and each state has to update both the transaction ledger and the live inventory count correctly. Bulk return proce

Real-time policy enforcement before checkout starts

Rather than validating a student's borrowing history only at final confirmation, the initial scan query itself returns overdue/bad-history flag counts, so the frontend can immediately surface

Screenshots