La sfida
Un'azienda del settore antincendio e sicurezza nel Sud Italia gestiva tutta la manutenzione estintori, impianti antincendio, DAE su carta. Gli operatori uscivano al mattino con fogli stampati, compilavano a mano i report di intervento, tornavano in ufficio e qualcuno li inseriva nel sistema. Un processo che funzionava, certo. Ma funzionava male.
I problemi erano evidenti: errori di trascrizione, ritardi nella rendicontazione, nessuna visibilità in tempo reale su chi stava facendo cosa. Il management vedeva i dati solo a fine settimana. E quando un cliente chiedeva lo storico degli interventi, servivano ore per ricostruirlo.
La soluzione
Ho progettato e sviluppato SafeTrack, un'app mobile nativa che accompagna l'operatore in ogni fase del lavoro quotidiano. L'idea era semplice: l'operatore apre l'app, vede la sua lista lavoro, prende in carico gli interventi, li completa e tutto si sincronizza automaticamente con il backoffice.
Ma la semplicità d'uso nasconde una complessità tecnica significativa.
Architettura offline-first
Gli operatori lavorano spesso in seminterrati, garage, capannoni posti dove il segnale è un lusso. Per questo ho scelto un'architettura offline-first: l'app funziona completamente senza connessione. I dati vengono scaricati all'inizio della giornata, gli interventi vengono registrati localmente e la sincronizzazione avviene quando il dispositivo torna online.
Ho utilizzato AsyncStorage per i dati operativi e SecureStore per i token JWT, garantendo sia la persistenza che la sicurezza.
Due workflow distinti
Il sistema gestisce due workflow principali:
- Prelievo: l'operatore preleva il dispositivo (estintore, DAE, ecc.), lo porta in laboratorio, esegue la manutenzione e lo riconsegna
- SulPosto: l'operatore esegue la manutenzione direttamente presso il cliente
Ogni workflow ha i suoi stati, le sue validazioni e le sue regole. Ho implementato una macchina a stati che gestisce le transizioni e impedisce operazioni non valide.
Gestione gerarchica a 3 livelli
I dispositivi sono organizzati in una gerarchia a tre livelli: Categoria → Tipologia → Dispositivo. Questa struttura permette di navigare rapidamente tra migliaia di dispositivi e di applicare regole di manutenzione specifiche per ogni tipologia.
Stack tecnico
Il backend è costruito su Strapi 5 con autenticazione JWT. Ho scelto Strapi perché offre un'API REST completa out-of-the-box e un pannello di amministrazione che il backoffice può usare direttamente.
Il frontend è React Native con Expo SDK 54, TypeScript come linguaggio principale. La scelta di Expo ha accelerato enormemente lo sviluppo e il deployment su entrambe le piattaforme (iOS e Android).
Risultati
I numeri parlano chiaro:
- -70% tempi di rendicontazione: quello che prima richiedeva ore di data entry manuale ora è automatico
- Eliminazione completa della gestione cartacea: niente più fogli stampati, niente più errori di trascrizione
- Visibilità real-time dal backoffice: il management vede in tempo reale lo stato degli interventi, senza aspettare fine giornata
Lezioni apprese
SafeTrack è stata la mia prima app mobile in produzione con architettura offline-first. La lezione più importante? La sincronizzazione dei dati è il problema più difficile da risolvere. Non è sufficiente salvare i dati localmente e inviarli quando c'è rete bisogna gestire i conflitti, i retry, i timeout. Ho sviluppato un sistema di coda con retry exponential backoff che ha reso il processo robusto e affidabile.
Un'altra lezione: Expo SDK 54 è maturo per la produzione. I tempi di sviluppo rispetto a React Native CLI sono drasticamente inferiori, e la qualità del risultato è identica.