Il re-platforming di Check

Un software intelligente per la gestione dei dati del cantiere
Check nasce nel 2017 come portale del cantiere, con lo scopo principale di supportare i vari attori che partecipano virtualmente a un cantiere.
Dal punto di vista tecnologico, Check è stato sviluppato su tecnologia PHP/Symfony e consentiva la gestione dei cantieri, la condivisione di documentazione con gli altri partecipanti, la visualizzazione delle scadenze relative ai documenti e ai dipendenti, nonché la verifica della conformità dei lavoratori (ad esempio, se tutti hanno completato i corsi necessari per operare in cantiere). Inoltre, classificava le imprese in base alla tipologia (edile, non edile, mista, ecc.) utilizzando i dati forniti dalla Camera di Commercio.
Pagina dei cantieri di Check in PHP:
A ottobre 2023, Check ha completato il suo processo di "re-platforming", durato quasi 3 anni. Questo intervento ha comportato non solo un cambiamento dell'interfaccia grafica, ma soprattutto la sostituzione completa delle tecnologie strutturali utilizzate.
Il motivo che ha portato al "re-platforming" è stato dettato da alcune modifiche richieste al progetto. In particolare, si desiderava introdurre dashboard grafiche e interattive, che permettessero agli utenti di avere una visione d'insieme immediata sulla situazione aziendale e dei cantieri, con particolare attenzione agli aspetti legati alla sicurezza, all'organizzazione e all'ambiente.
Queste dashboard richiedevano, da un lato, la creazione di nuove strutture per immagazzinare i dati e, dall'altro, il recupero delle informazioni in modo aggregato, con l'obiettivo di filtrare solo quelle rilevanti senza rallentare l'esperienza utente. A questo punto, ci siamo resi conto che la tecnologia inizialmente adottata non sarebbe stata sufficiente per supportare tali esigenze. La soluzione consisteva nel tentare di evolvere il progetto integrando e migliorando la tecnologia originale oppure optare per un cambiamento radicale verso un'architettura completamente API based, necessaria anche per ottemperare al requisito che vedremo subito dopo l'immagine.
Tra le richieste del cliente c'era anche quella di rendere Check portatile come un'applicazione del cellulare, in modo che un utente potesse ricevere una notifica quando qualcuno gli condivideva un messaggio, un documento o un oggetto in un cantiere.
Anche questa era una richiesta che con l'utilizzo della tecnologia iniziale non saremmo riusciti a introdurre facilmente. Inoltre, il sistema era nato per vivere principalmente su piattaforma desktop e l'aspetto mobile praticamente non era ancora stato considerato.
È stata colta quindi l'occasione per migliorare le interfacce dal punto di vista organizzativo, logico e grafico con il supporto guidato del cliente che ha scelto gli elementi principali approvando i nostri mockup grafici. Abbiamo quindi migrato tutte le funzionalità precedenti di Check sulla nuova piattaforma e, aggiornando la tecnologia, abbiamo potuto implementare tutte le richieste (dashboard, notifiche, utilizzo mobile), tenendo viva l'essenza che il sistema aveva in precedenza.
La complessità dell'operazione era dovuta principalmente a due fattori:
- La grande quantità di dati e interfacce da migrare;
- La necessità di mantenere operativo il sistema “legacy” di Check durante la migrazione.
Poiché la migrazione è durata mesi, abbiamo dovuto risolvere eventuali segnalazioni sul Check "legacy" e introdurre nuove funzionalità da tenere valide anche per il portale nuovo. Abbiamo quindi dovuto migrare man mano, nei mesi, le funzionalità una alla volta, riadattando le strutture dati precedenti in modo che potessero funzionare per le richieste future e allo stesso tempo quelle attuali.
La pagina dei cantieri dopo il replatform:
Le dashboard:
🤓 Nerd corner
Per poter sviluppare le richieste del re-platform e tenere vivo in parallelo il sistema di Check precedente abbiamo utilizzato la tecnica del "feature toggle". Questa consiste nell'introdurre una variabile vero/falso: se la variabile è impostata su "vero", vengono abilitati determinati comportamenti o sezioni, mentre se impostata su "falso", si mantengono quelli precedenti.
In questo modo, il codice ha potuto essere lo stesso per Check nuovo/vecchio e switchare facilmente il suo comportamento, permettendoci di testare e portare avanti il lavoro man mano anziché vedere il risultato solo alla fine. Questo ci ha anche permesso di rilasciare alcuni aggiornamenti parziali alla nuova piattaforma nel tempo, senza che l'utente finale li vedesse così che potesse continuare a utilizzare il Check "legacy".
Per rilasciare le applicazioni per Google Android e Apple iOS, evitando di scrivere la piattaforma tre volte in tre linguaggi differenti abbiamo utilizzato la tecnologia ionic capacitor, in questo modo le versioni web, Android e iOS condividono quasi interamente lo stesso codice base.