Zeus Software/Work/VLAB Booking
Case studyHigher education · 2025

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.

Client
University of Padua
Sector
Higher education
Year
2025
VLAB Booking dashboard — monthly calendar and booking panel
A lecturer books a lab in 60 seconds. It used to mean going through the teaching office, a phone call, a shared calendar updated by hand.University of Padua · May 2026
01

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.

02

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.

i.

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.

ii.

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.

iii.

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.

03

Key
features.

Six main areas of the platform. Each area is exposed as a NestJS module with dedicated role guards and built-in statistics.

i

Lab
bookings

Time slots with duration control, states (processedAt, completedAt), cascade deletion of linked children.

ii

Labs
& statistics

Resource catalog, capacity configuration, lab-statistics dashboard with usage by period and role.

iii

Student
groups

Lecturers manage cohorts, assign labs, book in bulk. Visibility limited to their own groups.

iv

Contract
signing

A contract-signature module for accepting lab regulations. Audit-ready signature history.

v

Support
tickets

A separate service (vlabooking-support) for IT requests. Dedicated queue, no coupling with core booking.

vi

Dashboard
notifications

Slot reminders, status changes, administrative communications. Triggers orchestrated by the scheduler.

04

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.

i.primary

Student

  • Books available lab slots
  • Views their own bookings
  • Signs regulation contracts
  • Opens support tickets
  • Receives reminders and notifications
Self-service experience
ii.teaching

Lecturer

  • Creates and manages groups
  • Books in bulk for cohorts
  • Assigns labs to courses
  • Views statistics for their own groups
  • Approves exceptional requests
View limited to their own groups
iii.ops

Administrator

  • Full user management
  • Lab configuration
  • University-wide aggregated statistics
  • Booking overrides
  • Master contract management
Administrative access
iv.tech

IT

  • Infrastructure resource management
  • Support ticket triage
  • Scheduler & job monitoring
  • SAML & SSO configuration
  • Audit log and diagnostics
Technical access
05

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.

i.API · NestJS 10

vlabooking
-be

Core REST API: bookings, labs, groups, contracts. SAML+JWT auth, RBAC guards.

packages/vlabooking-be
ii.Frontend · Angular 17

vlabooking
-fe

PrimeNG console with views for students, lecturers, admins and IT. Lazy loading per role.

packages/vlabooking-fe
iii.Scheduler · standalone

vlabooking
-scheduler

Isolated timed jobs: reminders, state transitions, automatic slot completion.

packages/vlabooking-scheduler
iv.Service · support

vlabooking
-support

Dedicated ticketing microservice. Separate queue, scaling independent from core booking.

packages/vlabooking-support
v.Lib · shared

db
-lib

Schema, models and DB access shared across every service. A single source of truth.

packages/db-lib
06

Technical
features.

Decisions that protect the platform long-term: explicit workflow states, controlled cascades, an isolated scheduler, one container per domain.

i.Explicit workflowBookings have states materialized as timestamps (processedAt, completedAt) — no opaque enums. A query can always tell where a slot stands and for how long.
ii.Controlled cascadeDeleting a parent booking cascades the removal of linked children (slots, participants, pending notifications) in a single transaction. No orphan records in the DB.
iii.Isolated schedulerTimed jobs run in a dedicated container. A spike in reminders or a scheduler crash never touches the booking API — users keep booking.
iv.SSO SAML + JWTUniversity identity via SAML, inter-service sessions via signed JWT. Passport orchestrates the strategies — one login, propagated across every microservice.
v.Multi-image deployFive Dockerfiles, five images, one docker-compose. Nginx as reverse proxy acts as the single entry point and terminates TLS — every service scales on its own.
vi.Lazy loading per roleThe Angular bundle is split by functional area. A student never downloads the admin console — a light initial bundle, fast navigation on the campus network.
07

Tech
stack.

Nx monorepo with five containerized services. NestJS for the backend, Angular 17 with PrimeNG for the console, Passport for SAML/JWT orchestration.

MonorepoNx 19
BackendNestJS 10
FrontendAngular 17
UIPrimeNG
Auth · SSOSAML
Auth · sessionJWT · Passport
SchedulerStandalone
SupportMicroservice
Shareddb-lib
ContainerDocker
ProxyNginx
DatabasePostgreSQL

Students booking in three taps, IT sleeping through the night.

Are you a university with teaching labs?

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.