Project

Projects

COMPUTER 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.

COMPUTER LAB REPORTING SYSTEM

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