UCC Borrowing System
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.
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