Dietro le quinte: sviluppare un'app per tracciare le avventure

Simon · January 30, 2024

Dietro le quinte: sviluppare un'app per tracciare le avventure

Se non l'hai ancora visto, dai un'occhiata veloce al mio post precedente prima di tuffarti in questo. Presenta la serie di articoli del blog e racconta un po' della storia delle origini di Pebbls.

La bozza di quel post era molto più lunga: esplorava alcuni dettagli tecnici del processo di sviluppo dell'app. Che tu ci creda o no, ad alcune persone (come me) interessano queste cose. Però un paio dei miei fidati beta tester mi hanno fatto notare che, nonostante un elegante interruttore '*Sai leggere il linguaggio da nerd?*' che nascondeva gran parte dei contenuti tecnici, se non sei portato per queste cose poteva essere un po' troppo 😲.

Quello che stai per leggere è un articolo su alcuni aspetti dello sviluppo tecnico dell'app di tracciamento dei viaggi Pebbls. Se ti interessano i discorsi tecnici, o se non ti interessano ma fai fatica a dormire, continua a leggere; altrimenti va benissimo, puoi saltare questo post: ci risentiamo la prossima volta con qualche consiglio per preparare la tua prossima avventura.

Se sei davvero sicuro di voler proseguire, devo solo verificare che tu abbia letto il post precedente. Ti aiuterà davvero a capire la cronologia.

L'evoluzione dell'app di tracciamento Pebbls

A questo punto della storia siamo a luglio 2017. Mancano pochi giorni alla partenza per un'avventura in bici di 3 mesi attraverso Francia e Spagna, e qualche giorno in meno al mio matrimonio.

Da sviluppatore web full-stack freelance e autodidatta, la mia esperienza riguardava soprattutto la progettazione e la messa online di applicazioni web basate su database. Lo sviluppo di app mobile, però, era tutta un'altra storia. Con il tempo agli sgoccioli e una lunga lista di cose da fare prima del viaggio (tra cui 'sposarsi'), non c'era tempo per imparare qualcosa di nuovo.

Così ho messo insieme una soluzione ibrida: un sistema un po' alla Rube Goldberg, con un'app di terze parti che girava in background per raccogliere i dati GPS del percorso e una semplice interfaccia in PHP e JavaScript per creare i pebbls (i segnaposto sulla mappa) e sincronizzare i dati online. Questa interfaccia girava su un web server installato sul mio telefono Android.

L'esperienza utente era tutt'altro che ideale. Ma cosa ci si può aspettare da qualcosa costruito in meno di un paio d'ore? Visto che ero l'unico a dover usare quella parte del sistema improvvisato, i difetti non mi importavano. Era un po' macchinoso, ma faceva il suo lavoro.

Interfaccia del primo prototipo

A questo punto del post mi piacerebbe mostrarti qualche screenshot un po' grezzo del percorso nell'interfaccia web originale di Pebbls (macchinosa, non responsive e senza lazy loading) insieme a una mappa incorporata di quel viaggio inaugurale. Dopotutto, quella è stata la genesi di Pebbls, il momento in cui la nostra avventura di luna di miele è stata immortalata. Però non posso. L'ironia è che, dopo innumerevoli versioni e riscritture del codice, i dati di quel viaggio, proprio quello per cui Pebbls era stata creata, sono diventati illeggibili per il sistema. Peggio ancora, sembrano essersi dissolti nell'etere digitale. Sono abbastanza sicuro che i dati esistano ancora, sepolti tra terabyte di altri dati, in qualche backup sconosciuto. Un progetto che il me del futuro non vede l'ora di affrontare.

Nei pochi anni tra allora e oggi ho sviluppato una specie di ossessione (oltre 70 ore a settimana) per far crescere Pebbls, da quel prototipo improvvisato e a malapena funzionante a una piattaforma solida per condividere storie d'avventura, trovare ispirazione e creare legami. La prima cosa su cui mi sono concentrato dopo il ritorno da Gibilterra (te l'avevo detto, devi aver letto il post precedente) è stata imparare a sviluppare app mobile.

La scelta di un framework per app mobile

Visto il mio background nello sviluppo web e il fatto che si tratta di un progetto portato avanti da solo, ci tenevo molto a trovare un framework che sfruttasse le competenze che già avevo. Era anche importante poter mantenere un'unica base di codice sia per la versione iOS sia per quella Android dell'app. Ho esplorato alcune opzioni e inizialmente ho scelto Cordova. Cordova sembrava un approccio piuttosto semplice e, usando HTML, CSS e JavaScript, parlavamo in gran parte la stessa lingua. All'epoca mi sembrava il punto di partenza più comodo. Ho passato un po' di tempo a prendere confidenza con i dettagli pratici e ho usato l''università di YouTube' per mettermi al passo. Dopo qualche settimana avevo creato la prima versione di prova autonoma dell'app di tracciamento Pebbls. Come proof of concept è stato un traguardo enorme.

Anche se l'interfaccia che avevo creato con Cordova era brutta, potevo finalmente iniziare qualche test nel mondo reale. Non ci è voluto molto, però, per capire che gli stessi aspetti che all'inizio mi avevano attirato verso Cordova erano anche il suo tallone d'Achille. Cordova sembrava andare bene per creare un'app con vero HTML/JavaScript da impacchettare in un contenitore e installare sui dispositivi mobili, ma ottenere funzionalità davvero native era un'altra storia. Sembrava frammentato e limitante, soprattutto per le funzioni che consideravo irrinunciabili: posizione in background, esecuzione regolare di attività in background, interazione con il filesystem e altre ancora. Ora non ricordo i problemi specifici, ma ho deciso di limitare i danni e ricominciare da capo. Ho ripetuto lo stesso processo con quattro framework in tutto: Cordova, Flutter, Ionic e infine React Native.

Loghi dei framework per lo sviluppo mobile - Cordova, Flutter, Ionic, React Native

Scegliere il framework giusto si è rivelato un processo lento e frustrante. Ho creato una sorta di prototipo di app di tracciamento con ciascuno di loro. Ci è voluto molto tempo (un paio di mesi), ma alla fine ne è valsa la pena e la decisione finale è stata facilissima: il vincitore indiscusso per me è stato React Native (con Expo ed EAS), e non mi sono mai pentito.

React Native mi ha davvero colpito, non solo come framework moderno e capace, ma anche per l'energia e l'entusiasmo che lo circondano. C'è una community molto attiva di sviluppatori, maintainer e creatori di moduli, e la documentazione e i tutorial sono vastissimi. L'impegno nel far evolvere la piattaforma e il vedere funzioni che cercavo sviluppate e implementate così in fretta mi hanno rassicurato molto. Non sono rimasto deluso.

L'evoluzione dell'app di tracciamento Pebbls

Usare React Native e il workflow gestito di Expo con EAS da sviluppatore solitario ha cambiato completamente le carte in tavola: ora che ci ho preso la mano posso sviluppare e rilasciare con molti meno grattacapi. Passare da un sistema basato su HTML e CSS, come Cordova, al framework React in realtà non è stato molto doloroso. Ancora più impressionante è il modo in cui la pipeline di build di EAS gestisce senza sforzo attività complesse come certificati e firma delle chiavi, che altrimenti possono richiedere ore se fatte a mano da comuni mortali come me, che non se ne occupano tutti i giorni. Oltre a tutto questo, uno dei vantaggi più grandi per me è la facilità con cui si individuano i bug (con strumenti come Logrocket), si implementano le correzioni e si distribuiscono aggiornamenti over-the-air agli utenti. Posso completare questi aggiornamenti nel giro di pochi minuti, dalla ricezione della segnalazione di un bug fino al rilascio della correzione sui dispositivi degli utenti.

Test, test, test

Creare qualsiasi software richiede un programma di test rigoroso. Più scenari riusciamo a esplorare, più siamo attrezzati per garantire un'esperienza utente fluida e minori sono le probabilità che gli utenti si imbattano in bug sul campo. Simulatori e strumenti per falsificare la posizione hanno la loro utilità, ma a un certo punto bisogna farsi coraggio, aprire la porta, uscire, ricordare al proprio corpo cos'è la vitamina D e fare qualche test nel grande mondo là fuori. Mentre la prima versione pienamente funzionante dell'app di tracciamento Pebbls si avvicinava al traguardo, mi ritrovavo a portare con me 2 o 3 dispositivi ovunque andassi. Questi dispositivi tracciavano ogni mio movimento e riportavano tutto al server di Pebbls. Una volta tornato a casa, avevo un tesoro di dati da analizzare. Questo processo è stato preziosissimo per individuare ed eliminare bug, oltre che per migliorare le prestazioni.

Testare l'app di tracciamento Pebbls on the road

La fase successiva dei test era portare l'app in un'altra avventura reale. C'erano già alcuni beta tester in giro a fare proprio questo, ma per me era importante farlo in prima persona, per sperimentare da solo il meglio e il peggio dell'app. Così, dopo un ritardo dovuto al Covid (vedi il post precedente), è esattamente ciò che ho fatto. Io e Lucy abbiamo passato 6 mesi pedalando attraverso l'Europa e la Turchia fino alla Georgia. Abbiamo tracciato il percorso per tutto il tempo, fermandoci di tanto in tanto, spesso sul fianco di una montagna o su una costa rocciosa, per correggere bug e continuare a sviluppare funzioni. Questo test nel mondo reale è stato fondamentale: mi ha permesso di capire come l'app si sarebbe comportata in diverse condizioni di GPS e di rete. Questa esperienza è diventata parte integrante dello sviluppo dell'app, rendendola più solida e affidabile per gli altri avventurieri.

Simon e Lucy in bici lungo un sentiero alberatoBikepacking attraverso ParigiPanorama innevato in Turchia durante un viaggio in bikepackingSimon al lavoro sul laptop in un campeggio liberoScorcio del porto di Batumi, in GeorgiaLucy in bici accanto a una fortezza in Albania

Ascoltare i feedback degli utenti e migliorare di continuo

Pebbls non serve solo a tracciare il tuo viaggio: serve a raccontare storie vere e a trovare ispirazione, e ruota attorno alla community di avventurieri ed esploratori che usano la piattaforma. Chiedo attivamente agli utenti feedback e commenti sulla loro esperienza. Queste osservazioni e questi suggerimenti hanno un ruolo fondamentale nel definire le funzioni e il funzionamento dell'app. Molti dei miglioramenti presenti oggi in Pebbls sono nati da suggerimenti degli utenti: l'integrazione del supporto a GPX e Strava, l'aggiunta di nuove icone per i pebbls, il miglioramento dell'interfaccia utente o delle prestazioni. I tuoi feedback sono il motore di questa evoluzione continua. Rilascio regolarmente aggiornamenti basati sui tuoi suggerimenti, così che Pebbls cresca per rispondere alle esigenze di avventurieri come te.

Contattami

Vuoi contribuire a dare forma al futuro di Pebbls? Mi farebbe molto piacere sentirti. Condividi le tue avventure, le tue idee e i tuoi feedback tramite la pagina dei contatti o scrivendo a hello@pebbls.com