Tagline: Fair access. Smarter booking. Better resource utilization.
A full-stack campus platform that lets college student teams discover, book, use, and release shared institutional resources (GPU servers, robotics bays, 3D printers, cinema cameras, meeting rooms) with server-side conflict detection, FIFO waitlisting, and no-show automated freeing.
- Frontend: React 18, TypeScript, Vite, Tailwind CSS, Lucide Icons, Recharts, Axios
- Backend: Node.js, Express, TypeScript, Mongoose, bcrypt, jsonwebtoken, node-cron
- Database: MongoDB (with automatic fallback to in-memory MongoDB for zero-config development)
- Architecture: Monorepo (
/serverand/client)
# In the root directory:
npm install --workspace=server
npm install --workspace=clientPopulates demo resources (GPU cluster, 3D printers, cameras, labs, rooms), student teams, and users across all roles:
npm run seedOpen two terminal windows:
Terminal 1 (Backend API):
npm run dev:server
# API running on http://localhost:5000Terminal 2 (Frontend Client):
npm run dev:client
# Web app running on http://localhost:5173Use the 1-click login buttons on the login page, or sign in manually with:
| Role | Password | Access Details | |
|---|---|---|---|
| Student | alex@student.edu |
Student@123 |
Team leader ("Neural Knights"), browses catalog, reserves slots, views QR pass |
| Student | sam@student.edu |
Student@123 |
Team leader ("RoboDynamics"), active 3D printer session |
| Faculty | faculty@college.edu |
Faculty@123 |
Dr. Evelyn Reed, oversees mentored CS project teams and departmental usage |
| Admin | admin@college.edu |
Admin@123 |
Control center, resource CRUD, real-time utilization % and no-show scanner |
To verify server-side conflict detection under simultaneous concurrent requests hitting the same single-unit slot:
npm run test:concurrencyExpected Output: Exactly 1 booking confirmed, and 4 concurrent conflicting requests rejected with 409 Conflict.
- Scaffolded Monorepo:
/server(Express + TS) and/client(React + Vite + TS). - Mongoose Schemas:
User,Team,Resource,Booking,Waitlist,Notification. - Authentication & RBAC: JWT access + refresh tokens, bcrypt password hashing, role-guarded routes (
student,faculty,admin). - Team Management: Create teams, add/remove members, max-capacity enforcement (6 members), team usage hours tracking.
- Resource Management: Admin CRUD with status states (
AVAILABLE,BOOKED,MAINTENANCE,DISABLED), unit quantity indexing, and max duration rules. - Availability Engine:
/api/resources/:id/availabilityreturning real-time busy intervals and unit availability breakdown. - Race-Condition Safe Booking: Server-side conflict detection utilizing keyed mutex serialization and overlap interval queries.
- Cancellation & Waitlist Notification: Releasing a booking immediately updates status to
CANCELLEDand offers the slot to the top waiting team. - FIFO Waitlist Queue: Teams can join queues for booked slots; offered teams have a claim window to convert directly into a confirmed reservation.
- Automated No-Show Scanner: Scheduled background cron job detecting bookings past their start time + grace period with no check-in, freeing the resource and recalibrating reliability score.
- Responsive Dark Mode UI: Tailored HSL palette, glassmorphism panels, interactive calendar timelines, Recharts utilization analytics, and quick role switching.