VLAB —
teaching
labs.
An all-in-one platform for booking virtual and physical labs. SAML SSO, group management, usage statistics and integrated support tickets — on a containerized microservices architecture.

What is
VLAB Booking.
A cross-role platform for managing the entire lifecycle of teaching labs: students book slots, lecturers coordinate groups and bookings, IT administers resources and monitors usage — all from a single console built on university single sign-on.
Where we
started.
Teaching labs booked through the teaching office, Google calendars shared between lecturers, slot conflicts handled over the phone. No visibility into real occupancy, overlaps or maintenance windows — IT only found out about problems after the damage was done.
The challenge
Manage bookings for dozens of teaching labs from hundreds of lecturers, with four distinct roles — lecturer, student, lab technician, teaching office. Modular infrastructure for bookings, calendars, user management and audit. University SAML federation as the single source of identity.
Our approach
Nx monorepo with five containerized services, each responsible for one domain. RBAC with four distinct views, each built around the real workflow of its role. Infrastructure-as-code deployment on the university cluster. Weekly demos with lab technicians and the teaching office to validate every iteration.
The result
Lab booking centralized on a single platform, slot conflicts eliminated at the root, a complete audit trail on every movement. A modular infrastructure ready to scale to new departments without rebuilding the architecture — same code, new configuration.
Key
features.
Six main areas of the platform. Each area is exposed as a NestJS module with dedicated role guards and built-in statistics.
Lab
bookings
Time slots with duration control, states (processedAt, completedAt), cascade deletion of linked children.
Labs
& statistics
Resource catalog, capacity configuration, lab-statistics dashboard with usage by period and role.
Student
groups
Lecturers manage cohorts, assign labs, book in bulk. Visibility limited to their own groups.
Contract
signing
A contract-signature module for accepting lab regulations. Audit-ready signature history.
Support
tickets
A separate service (vlabooking-support) for IT requests. Dedicated queue, no coupling with core booking.
Dashboard
notifications
Slot reminders, status changes, administrative communications. Triggers orchestrated by the scheduler.
Four roles,
four views.
Granular RBAC with four distinct profiles. SAML brings identities from the university, JWT carries them between services — the NestJS guard filters queries at the repository level.
Student
- Books available lab slots
- Views their own bookings
- Signs regulation contracts
- Opens support tickets
- Receives reminders and notifications
Lecturer
- Creates and manages groups
- Books in bulk for cohorts
- Assigns labs to courses
- Views statistics for their own groups
- Approves exceptional requests
Administrator
- Full user management
- Lab configuration
- University-wide aggregated statistics
- Booking overrides
- Master contract management
IT
- Infrastructure resource management
- Support ticket triage
- Scheduler & job monitoring
- SAML & SSO configuration
- Audit log and diagnostics
Five services,
one monorepo.
Nx 19 orchestrates five independent packages: core API, Angular frontend, standalone scheduler, support microservice, shared DB library. Multi-image Docker deployment behind nginx.
vlabooking
-be
Core REST API: bookings, labs, groups, contracts. SAML+JWT auth, RBAC guards.
vlabooking
-fe
PrimeNG console with views for students, lecturers, admins and IT. Lazy loading per role.
vlabooking
-scheduler
Isolated timed jobs: reminders, state transitions, automatic slot completion.
vlabooking
-support
Dedicated ticketing microservice. Separate queue, scaling independent from core booking.
db
-lib
Schema, models and DB access shared across every service. A single source of truth.
Technical
features.
Decisions that protect the platform long-term: explicit workflow states, controlled cascades, an isolated scheduler, one container per domain.
Tech
stack.
Nx monorepo with five containerized services. NestJS for the backend, Angular 17 with PrimeNG for the console, Passport for SAML/JWT orchestration.
Students booking in three taps, IT sleeping through the night.
Still booking classrooms
through the teaching office?
We build multi-role booking systems for universities: modular monorepo, university SAML federation, containerized infrastructure that scales to new departments. Send us a couple of lines — we reply within 48h.