Project
ProjectsCOMPUTER LAB REPORTING SYSTEM
Role-based reporting system for a school computer laboratory. Students and faculty submit hardware, software, facility, and cleanliness issues tied to a lab and workstation. Custodians triage those reports through verified, in progress, resolved, and closed, with rich notes on each case. Admins run user and lab management, publish a news feed, and review analytics they can export to PDF or CSV. Built with React, Vite, and React Router, with JWT auth, email OTP verification, and a same-origin API proxy in production.

React · Vite · Node.js · Express · MongoDB
Problem
Computer labs collect the same problems over and over: a dead workstation, missing software, a room left in bad shape. Those reports usually live in chat threads or paper logs, so custodians cannot see what is still open, and students never hear what happened to the ticket they filed.
What I built
CIT-CLRS (Computer Laboratory Reporting System) is a role-based web app for reporting, tracking, and resolving laboratory issues.
Students and faculty sign in, file a report against a specific lab and workstation (hardware, software, facility, or cleanliness), and follow their own submissions. Lab custodians review every report, move it through verified, in progress, resolved, and closed, and leave formatted notes on the case. Administrators manage users and laboratory records, publish a news feed, and watch notifications for new reports, status changes, and announcements.
The analytics dashboard shows summary counts, status mix, common issue categories, reports by laboratory, daily and monthly trends, custodian performance, and top student and faculty reporters. The same view exports to CSV or a multi-page PDF.
How it works
The interface is a React single-page app built with Vite. Each route is gated by role: admin, lab custodian, student, or faculty. Sign-in is email and password with a JWT, and unverified accounts finish email OTP before they can continue. The client calls a Node.js and Express API stored in MongoDB. In production, Vercel rewrites /api to that server so the browser stays on the same origin.
Result
Lab issues have one place to be filed, triaged, and closed, and each role only sees the tools they need.
Gallery