Zeus Software/Progetti/VLAB Booking
Case studyUniversità · 2023

VLAB —
l’accesso segue
la prenotazione.

Studenti e docenti prenotano il laboratorio virtuale. Il sistema abilita le utenze prima dell’inizio e le rimuove dopo la fine, collegando il calendario all’infrastruttura dell’Ateneo.

Cliente
Università di Padova
Settore
Università
Anno
2023
Dashboard VLAB Booking — calendario mensile e pannello prenotazioni
Dalla prenotazione all'accesso, senza passaggi a mano. Il docente prenota il laboratorio per il suo gruppo; prima dell'inizio le utenze vengono abilitate sul pool Horizon, dopo la fine vengono tolte.Università di Padova · maggio 2026
01

Cos'è
VLAB Booking.

Un sistema che collega le prenotazioni ai laboratori virtuali dell’Ateneo. Gestisce l’abilitazione delle utenze, gli avvisi e la rimozione degli accessi. Si integra con VMware Horizon, i gruppi dei corsi su Moodle e l’accesso con le credenziali d’Ateneo.

02

Da dove siamo
partiti.

Un laboratorio virtuale è un pool di desktop VMware Horizon costruito su immagine e snapshot preparati per un corso. Per entrarci, l'utenza deve essere abilitata in Active Directory: lasciarla aperta sempre significa accessi che restano a chi non ne ha più diritto, aprirla e chiuderla a mano lezione per lezione non regge.

i.

La sfida

Tenere allineati il calendario delle lezioni, i gruppi dei corsi su Moodle e le utenze abilitate sulla VDI. Quattro ruoli — studente, docente, IT di dipartimento, amministratore — e un solo accesso: la federazione SAML d'Ateneo.

ii.

Il nostro approccio

Il booking non tocca direttamente l'infrastruttura. Ogni minuto lo scheduler scrive i file di abilitazione, avviso e rimozione che un agente lato VDI consuma, e ne importa i log di accesso. La creazione dei laboratori passa da un piccolo server on-premise che esegue gli script PowerShell di VMware.

iii.

Il risultato

Un accesso esiste solo finché c'è una prenotazione che lo giustifica: si apre prima dell'inizio, si chiude dopo la fine, e si chiude anche quando il laboratorio scade o viene cancellato. Le statistiche contano gli accessi registrati da Horizon, non le prenotazioni.

03

Funzionalità
chiave.

Sei aree per gestire prenotazioni, laboratori, gruppi e accessi. Ogni ruolo dispone delle informazioni e delle azioni necessarie al proprio lavoro.

i

Prenotazioni
lab

Calendario con prenotazioni singole o ricorrenti, condivisibili con colleghi o gruppi. Controllo dei posti disponibili attivabile per laboratorio.

ii

Laboratori
& statistiche

Ogni laboratorio ha immagine e snapshot VMware, posti, anno accademico e scadenza. Statistiche per durata delle sessioni e posti usati.

iii

Gruppi
studenti

Gruppi creati dai docenti o sincronizzati dai corsi Moodle. Chi è nel gruppo vede e prenota i laboratori assegnati.

iv

Firma
regolamento

Regolamento d'uso in italiano e inglese, con revisioni numerate e stato bozza o pubblicato. Per ogni utente resta registrata la versione firmata.

v

Ticket
supporto

Servizio separato (vlabooking-support) per le richieste di aiuto, con notifica email all'apertura e a ogni risposta. Li gestisce l'IT.

vi

Avvisi
dashboard

Comunicazioni degli amministratori — manutenzioni, scadenze — con periodo di validità e livello: info, warning, danger.

04

Quattro ruoli,
quattro viste.

Quattro profili, e un utente può averne più d'uno. SAML porta l'identità dall'Ateneo, un JWT la porta nelle chiamate all'API: i guard controllano il ruolo, i service filtrano i dati che ognuno può vedere.

i.primary

Student

  • Prenota i laboratori dei suoi gruppi
  • Vede le prenotazioni proprie e condivise
  • Firma il regolamento d'uso
  • Apre ticket di supporto
  • Legge gli avvisi in dashboard
Esperienza self-service
ii.teaching

Lecturer

  • Vede i laboratori di cui è docente
  • Gestisce i gruppi di studenti
  • Prenota per sé e per i gruppi
  • Imposta prenotazioni ricorrenti
  • Consulta le statistiche d'uso
Vista limitata ai propri laboratori
iii.ops

Administrator

  • Gestisce utenti e ruoli
  • Pubblica il regolamento d'uso
  • Scrive gli avvisi in dashboard
  • Configura dipartimenti e Moodle
  • Vede tutti i dipartimenti
Accesso amministrativo
iv.tech

IT

  • Crea e configura i laboratori
  • Sceglie immagine e snapshot VMware
  • Assegna docenti e tecnici
  • Vede tutte le prenotazioni dei lab
  • Risponde ai ticket di supporto
Limitato ai propri dipartimenti
05

Cinque pacchetti,
un solo monorepo.

Nx 23 tiene insieme quattro applicazioni Node e Angular, il server Python che parla con VMware e due librerie condivise: i modelli di dominio, usati identici da backend, frontend e scheduler, e i modelli Sequelize. In produzione: Postgres, quattro repliche dell'API, servizio ticket e scheduler dietro nginx.

i.API · NestJS 11

vlabooking
-be

API REST: laboratori, prenotazioni, gruppi, utenti, regolamento. Login SAML, JWT, guard per ruolo. Fa da proxy verso il servizio ticket.

packages/vlabooking-be
ii.Frontend · Angular 21

vlabooking
-fe

Console PrimeNG con calendario FullCalendar, in italiano e inglese. Menu e pagine seguono i ruoli dell'utente.

packages/vlabooking-fe
iii.Scheduler · cron

vlabooking
-scheduler

Nessuna API, solo job: ogni minuto scrive i file di abilitazione, avviso e rimozione per la VDI e importa i log di accesso.

packages/vlabooking-scheduler
iv.Service · ticket

vlabooking
-support

Microservizio per i ticket, con notifiche email. Non ha un'autenticazione propria: riceve l'utente dal backend.

packages/vlabooking-support
v.Bridge · FastAPI

py-local
-server

Installato on-premise presso l'Ateneo: esegue gli script PowerShell che leggono immagini e snapshot e creano i laboratori virtuali.

packages/py-local-server
06

Caratteristiche
tecniche.

Le scelte che contano di più stanno al confine con l'infrastruttura d'Ateneo: un contratto semplice verso la VDI, accessi che si chiudono da soli, uno schema che cambia solo con le migrazioni.

i.Contratto a fileVerso la VDI lo scheduler scrive file CSV in tre cartelle — abilitazione, avviso, rimozione — e legge i log di accesso da una quarta. Nessuna dipendenza da API di Horizon: processedAt e completedAt segnano a che punto è ogni prenotazione.
ii.Accessi che si chiudonoDocenti e tecnici di un laboratorio hanno una prenotazione di sistema che tiene aperta la loro utenza. Lo scheduler la riallinea ogni minuto: quando il laboratorio scade o viene cancellato, parte la rimozione.
iii.Posti per personaL'occupazione si calcola per intervalli di tempo e conta ogni utente una volta sola, anche con prenotazioni sovrapposte o in più gruppi. Prenotazioni adiacenti non risultano in conflitto.
iv.SSO SAML + JWTLogin con la federazione SAML d'Ateneo, poi un JWT per le chiamate all'API. Autenticazione e ruoli sono guard globali; il servizio ticket sta dietro il backend, che gli passa l'utente.
v.Migrazioni versionateLo schema cambia solo con migrazioni numerate. Partono quattro repliche dell'API insieme, quindi le migrazioni girano sotto un lock consultivo di Postgres; i test fotografano tabelle, colonne e indici.
vi.Statistiche dagli accessiI log di accesso di Horizon vengono importati e associati al laboratorio. Le statistiche mostrano quanto durano davvero le sessioni e quanti posti si usano, non quanto si è prenotato.
07

Tech
stack.

Monorepo Nx con quattro applicazioni e due librerie condivise. NestJS e Sequelize sul backend, Angular con PrimeNG sulla console, Passport per SAML e JWT.

MonorepoNx 23
BackendNestJS 11
FrontendAngular 21
UIPrimeNG · FullCalendar
Auth · SSOSAML
Auth · sessionJWT · Passport
DatabasePostgreSQL
ORMSequelize
VDIVMware Horizon
LMSMoodle
BridgeFastAPI · PowerShell
DeployDocker · Nginx
✦

La prenotazione apre il desktop, la fine lo richiude.

Sei un ateneo con laboratori virtuali?

Abilitate ancora a mano
gli accessi ai laboratori?

Costruiamo sistemi di prenotazione per atenei collegati all'infrastruttura che avete già: SSO SAML, Moodle, VDI. Mandaci due righe — rispondiamo entro 48 ore.

Le immagini hanno scopo esplicativo e non rappresentano necessariamente lo stato attuale dell'applicazione.