Back to Portfolio

Laboratory Resource Control System

Full-Stack Web Development2026

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.

Laboratory Resource Control System

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.

Problem illustration

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

Python 3.10+Django 4.2PostgreSQL 15Bootstrap 5.3HTML5 / CSS3Django ORM / Q ObjectsGunicornWhiteNoisepython-dotenvdj-database-urlRenderNeon.tech

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.
Laboratory Resource Control System | Abdulrahman Hamdi