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

VLAB —
laboratori
didattici.

Piattaforma all-in-one per la prenotazione di laboratori virtuali e fisici. SSO SAML, gestione gruppi, statistiche utilizzo e ticket di supporto integrato — su architettura microservizi containerizzata.

Cliente
NDA — ateneo italiano
Settore
Higher education
Anno
2025
Durata
7 mesi
Team
5 persone
Dashboard VLAB Booking — calendario mensile e pannello prenotazioni
Un docente prenota un laboratorio in 60 secondi. Prima passava per ufficio didattica, telefono, calendario condiviso da aggiornare a mano. Università di Padova · maggio 2026
01

Cos'è
VLAB Booking.

Una piattaforma cross-ruolo per gestire l'intero ciclo di vita dei laboratori didattici: gli studenti prenotano slot, i docenti coordinano gruppi e prenotazioni, l'IT amministra le risorse e monitora l'utilizzo — tutto da un'unica console basata su single sign-on di ateneo.

02

Da dove siamo
partiti.

Laboratori didattici prenotati via ufficio didattica, calendari Google condivisi tra docenti, conflitti di slot gestiti al telefono. Nessuna visibilità su occupazione reale, sovrapposizioni e finestre di manutenzione — l'IT scopriva i problemi solo a danno fatto.

i.

La sfida

Gestire la prenotazione di decine di laboratori didattici da parte di centinaia di docenti, con quattro ruoli distinti — docente, studente, tecnico di laboratorio, ufficio didattica. Infrastruttura modulare per prenotazioni, calendari, gestione utenti e audit. Federation SAML d'Ateneo come unica fonte di identità.

ii.

Il nostro approccio

Monorepo Nx con cinque servizi containerizzati, ognuno responsabile di un dominio. RBAC con quattro viste distinte, ognuna pensata sul flusso reale del ruolo. Deploy infrastructure-as-code su cluster di Ateneo. Dimostrazioni settimanali con tecnici di laboratorio e ufficio didattica per validare ogni iterazione.

iii.

Il risultato

Prenotazione laboratori centralizzata su una sola piattaforma, conflitti di slot eliminati alla radice, audit completo su ogni movimento. Infrastruttura modulare pronta a scalare su nuovi dipartimenti senza rifare l'architettura — stesso codice, nuova configurazione.

03

Funzionalità
chiave.

Sei aree principali della piattaforma. Ogni area è esposta come modulo NestJS con guard di ruolo dedicati e statistiche integrate.

i

Prenotazioni
lab

Slot temporali con controllo durata, stati (processedAt, completedAt), cancellazione cascade dei figli collegati.

ii

Laboratori
& statistiche

Catalogo risorse, configurazione capienza, dashboard lab-statistics con utilizzo per periodo e ruolo.

iii

Gruppi
studenti

Docenti gestiscono coorti, assegnano laboratori, prenotano in blocco. Visibilità solo sui propri gruppi.

iv

Firma
contratti

Modulo contract-signature per accettazione regolamenti lab. Storico firme audit-ready.

v

Ticket
supporto

Service separato (vlabooking-support) per richieste IT. Coda dedicata, niente accoppiamento col core booking.

vi

Notifiche
dashboard

Reminder slot, cambi di stato, comunicazioni amministrative. Trigger orchestrati dallo scheduler.

04

Quattro ruoli,
quattro viste.

RBAC granulare con quattro profili distinti. SAML porta le identità dall'ateneo, JWT le mantiene tra i servizi — il guard NestJS filtra le query a livello di repository.

i. primary

Student

  • Prenota slot lab disponibili
  • Visualizza propri impegni
  • Firma contratti regolamento
  • Apre ticket di supporto
  • Riceve reminder e notifiche
Esperienza self-service
ii. teaching

Lecturer

  • Crea e gestisce gruppi
  • Prenota in blocco per coorti
  • Assegna laboratori a corsi
  • Vede statistiche dei propri gruppi
  • Approva richieste eccezionali
Vista limitata ai propri gruppi
iii. ops

Administrator

  • Gestione completa utenti
  • Configurazione laboratori
  • Statistiche aggregate ateneo
  • Override prenotazioni
  • Gestione contratti master
Accesso amministrativo
iv. tech

IT

  • Gestione risorse infrastrutturali
  • Triage ticket di supporto
  • Monitoraggio scheduler & job
  • Configurazione SAML & SSO
  • Audit log e diagnostica
Accesso tecnico
05

Cinque servizi,
un solo monorepo.

Nx 19 orchestra cinque pacchetti indipendenti: API core, frontend Angular, scheduler standalone, microservizio supporto, libreria DB condivisa. Deploy Docker multi-immagine dietro nginx.

i. API · NestJS 10

vlabooking
-be

Core REST API: prenotazioni, lab, gruppi, contratti. Auth SAML+JWT, guard RBAC.

packages/vlabooking-be
ii. Frontend · Angular 17

vlabooking
-fe

Console PrimeNG con viste per studenti, docenti, admin e IT. Lazy loading per ruolo.

packages/vlabooking-fe
iii. Scheduler · standalone

vlabooking
-scheduler

Job temporali isolati: reminder, transizioni di stato, completamento automatico slot.

packages/vlabooking-scheduler
iv. Service · supporto

vlabooking
-support

Microservizio dedicato ticket. Coda separata, scaling indipendente dal core booking.

packages/vlabooking-support
v. Lib · shared

db
-lib

Schema, modelli e accesso DB condivisi tra tutti i servizi. Una sola sorgente di verità.

packages/db-lib
06

Caratteristiche
tecniche.

Decisioni che difendono la piattaforma a lungo termine: stati di workflow espliciti, cascade controllata, scheduler isolato, container ognuno per il suo dominio.

i. Workflow esplicito Le prenotazioni hanno stati materializzati come timestamp (processedAt, completedAt) — niente enum opachi. Una query sa sempre dire dove si trova ogni slot e da quanto tempo.
ii. Cascade controllata La cancellazione di una prenotazione padre rimuove in cascata i figli collegati (slot, partecipanti, notifiche pending) in una singola transazione. Niente record orfani in DB.
iii. Scheduler isolato I job temporali girano in un container dedicato. Un picco di reminder o un crash dello scheduler non tocca le API di prenotazione — l'utente continua a prenotare.
iv. SSO SAML + JWT Identità di ateneo via SAML, sessioni interservice via JWT firmato. Passport orchestra le strategie — un solo login, propagato su tutti i microservizi.
v. Deploy multi-immagine Cinque Dockerfile, cinque immagini, un docker-compose. Nginx come reverse proxy fa da single entry point e termina TLS — ogni servizio scala in autonomia.
vi. Lazy loading per ruolo Il bundle Angular è splittato per area funzionale. Uno studente non scarica la console amministrativa — bundle iniziale leggero, navigazione veloce su rete di campus.
07

Tech
stack.

Monorepo Nx con cinque servizi containerizzati. NestJS per il backend, Angular 17 con PrimeNG per la console, Passport per l'orchestrazione SAML/JWT.

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

Studenti che prenotano in tre tap, IT che dorme la notte.

Sei un ateneo con laboratori didattici?

Gestisci ancora le aule
via ufficio didattica?

Costruiamo sistemi di prenotazione multi-ruolo per atenei: monorepo modulare, federation SAML d'Ateneo, infrastruttura containerizzata scalabile a nuovi dipartimenti. Mandaci due righe — rispondiamo entro 48h.