Laboratory Resource Control System
A high-performance Django reservation platform for academic laboratories — students book workstations, instructors approve requests, and admins manage infrastructure, all through role-based dashboards with enforced business rules and automated unit tests.

The Problem
Educational institutions struggle to manage limited lab resources fairly using manual spreadsheets or ad-hoc tools — leading to double-bookings, uncontrolled usage, and no clear approval workflow for instructors or admins. There was a need for a centralized, rule-enforcing, and role-aware reservation platform.

The Solution
Laboratory Resource Control System centralizes lab booking with enforced business rules: no overlapping reservations, a 120-minute daily cap per student, and a single-lab-per-day constraint. Three role-based dashboards serve Students, Instructors, and System Admins. Admins get full infrastructure control, CSV export, and Django Q-powered search. The app is deployed live on Render with a Neon.tech PostgreSQL database and WhiteNoise static file serving.
Role-Based Dashboards
Students browse labs and submit booking requests. Instructors approve or reject pending reservations for their assigned labs. Admins manage labs, computers, users, and download reservation reports — each role routed to its own protected dashboard at login.
Advanced Reservation Logic
Form validation enforces three hard rules: overlap prevention (no double-booking the same computer), a 120-minute daily limit per student across all labs, and a single-lab-per-day constraint — all checked server-side before any reservation is saved.
Admin Tools & Security
Admins can search students and instructors using Django Q objects (single query, no N+1), export reservation reports as CSV, and manage the full infrastructure. All views are protected with @login_required; secrets are stored in .env and never committed.
Architecture & Features
Django MVC monolith backed by PostgreSQL (Neon.tech), served via Gunicorn on Render, with WhiteNoise for static files, Bootstrap 5 Glassmorphism frontend, and automated unit tests covering core reservation and access logic.
- Backend: Django 4.2+ — views, forms, ORM, Q-based search, role routing
- Database: PostgreSQL 15+ via Neon.tech (production) / local (dev)
- Frontend: Bootstrap 5.3 — Glassmorphism theme, offcanvas nav, table-responsive
- Auth: Django built-in auth — unified login with role-based redirect
- Config: python-dotenv + dj-database-url — environment-based, no secrets in code
- Deployment: Render (Gunicorn WSGI) + WhiteNoise (static) + Procfile
- Testing: Django TestCase — overlap, daily limit, and role-access unit tests
Technologies Used
Project Gallery





Future Improvements
- Add real-time seat availability updates using Django Channels (WebSockets).
- Implement email/SMS notifications for reservation approvals and rejections.
- Build a calendar view for students to visualize available slots visually.
- Add analytics dashboard for admins showing peak usage hours and lab utilization.
- Develop a REST API + React frontend for a fully decoupled architecture.
- Extend unit test coverage to forms and admin CSV export logic.