( caso studio /07 )Gestionale · Full-stack

IAMFondazione Anna & Marco

Tre pannelli, una piattaforma: la rete di accoglienza multi-sede della Fondazione Anna e Marco gestita con tessere digitali a QR dinamico, al posto di badge e registri cartacei.

3pannelli: ospite, staff, admin
7sedi preconfigurate
31endpoint API
/01

Il contesto

La Fondazione Anna e Marco gestisce case di accoglienza in più città: ospiti da registrare, accessi da tracciare, contributi da monitorare — e operatori non tecnici che devono poter lavorare senza formazione complicata. Badge fisici e registri cartacei non scalano su una rete multi-sede.

/02

Tre esperienze, una piattaforma

  • Pannello ospiti: l'ospite si registra e riceve una tessera digitale con QR dinamico che si rigenera automaticamente — un codice TOTP a scadenza, come quelli dell'home banking. Niente badge da stampare, niente tessere clonabili: uno screenshot del QR smette di funzionare da solo.
  • Pannello staff: ogni operatore vede solo gli ospiti della propria città — l'isolamento per sede è imposto dal server, non dall'interfaccia. Funzioni: approvazione delle registrazioni, sospensioni, contributi, e uno scanner con fotocamera per verificare i QR all'ingresso.
  • Pannello admin: il gestionale del Presidente — visione su tutte le sedi, gestione degli operatori, statistiche, log accessi globale e bacheca comunicazioni verso le sedi.
/03

Come funziona l'accesso

Alla scansione, il server esegue una catena di verifiche: il QR appartiene al sistema, l'ospite esiste, non è in attesa di approvazione né sospeso, e il codice temporaneo è valido (standard TOTP RFC 6238, con tolleranza per gli sfasamenti di orologio). Solo allora l'accesso viene registrato nel log con sede e orario. Se manca il contributo annuale, l'operatore riceve un avviso — ma l'accesso resta consentito: è una struttura di accoglienza, la piattaforma segnala, non respinge. C'è anche l'ingresso manuale per codice ospite, tracciato come tale.

Il segreto TOTP non lascia mai il server: l'endpoint pubblico espone solo il codice corrente e i secondi rimanenti, e due serializzatori distinti separano i dati pubblici da quelli riservati.

/04

Sotto il cofano e stato

Node.js + Express con una scelta pragmatica: SQLite nativo del core di Node — zero compilazioni, zero dipendenze native, si avvia con un doppio click anche su una macchina d'ufficio. JWT e bcrypt per l'autenticazione, rate limiting sui login, migrations automatiche all'avvio. Frontend vanilla senza build step, con tre identità visive distinte per i tre pannelli. Completa il progetto un sito vetrina in React 19 + GSAP.

Stato: consegnato alla Fondazione — partner di SuperNova.

/ST

Scheda tecnica

Node.js + ExpressSQLite nativo (node:sqlite)otplib (TOTP RFC 6238)JWT + bcryptVanilla JS