Entre bastidores: cómo se desarrolla una app de seguimiento de aventuras
Si todavía no la has visto, echa un vistazo rápido a mi entrada anterior antes de meterte con esta. En ella presento esta serie del blog y cuento parte de la historia de cómo nació Pebbls.
El borrador de aquella entrada era mucho más largo: entraba en algunos detalles técnicos del proceso de desarrollo de la app. Aunque no lo creas, a algunas personas (como a mí) les interesan ese tipo de cosas. Sin embargo, un par de mis fieles beta testers me aconsejaron que, a pesar de tener un elegante interruptor de '*¿Hablas friki?*' que ocultaba la mayor parte del contenido técnico, si no te va mucho ese rollo podía resultar un poco excesivo 😲.
Lo que vas a leer es un artículo sobre parte del desarrollo técnico de la app de seguimiento de viajes Pebbls. Si te interesan las charlas técnicas, o si no te interesan pero te cuesta dormir, sigue leyendo; si no, no pasa nada, puedes saltarte esta: nos vemos la próxima vez con algunos consejos para preparar tu próxima aventura.
Si de verdad estás seguro de que quieres seguir, solo necesito comprobar que has leído sin falta la entrada anterior. Te ayudará mucho a entender la cronología.
La evolución de la app de seguimiento Pebbls
En este punto de la historia estamos en julio de 2017. Faltan solo unos días para que me vaya de aventura en bici durante 3 meses por Francia y España, y unos pocos menos para mi boda.
Como desarrollador web full-stack autodidacta y freelance, mi experiencia era sobre todo diseñar y desplegar aplicaciones web basadas en bases de datos. El desarrollo de apps móviles, en cambio, era otra historia. Con el tiempo corriendo y una larga lista de tareas pendientes antes del viaje (incluida 'casarme'), no había tiempo para aprender nada nuevo.
En su lugar, improvisé una solución híbrida: era un montaje un poco al estilo de las máquinas de Rube Goldberg, con una app de terceros funcionando en segundo plano para recoger los datos GPS de la ruta y una interfaz básica en PHP y JavaScript para crear los pebbls (los marcadores de ubicación) y sincronizar los datos online. Esta interfaz funcionaba sobre un servidor web instalado en mi móvil Android.
La experiencia de usuario estaba lejos de ser ideal. Pero ¿qué se puede esperar de algo construido en menos de un par de horas? Como yo era el único que tenía que usar esa parte del sistema improvisado, no me importaban sus asperezas. Era un poco tosco, pero cumplía su función.

En este punto de la entrada me gustaría poder enseñarte algunas capturas rudimentarias de la ruta en la interfaz web original de Pebbls (tosca, no adaptable y sin carga diferida) junto con un mapa insertado de aquel viaje inaugural. Al fin y al cabo, ese fue el origen de Pebbls, el momento en que nuestra aventura de luna de miel quedó inmortalizada. Pero no puedo. Lo irónico es que, tras incontables versiones y reescrituras de código, los datos de aquel viaje, precisamente para el que se creó Pebbls, se han vuelto ilegibles para el sistema. Peor aún, parece que se han esfumado en el éter digital. Estoy bastante seguro de que los datos siguen existiendo, enterrados entre terabytes de otros datos, en alguna copia de seguridad desconocida. Un proyecto que el yo del futuro espera con ilusión.
En los pocos años que han pasado desde entonces, he desarrollado una especie de obsesión (más de 70 horas a la semana) por convertir Pebbls, de aquel prototipo improvisado que apenas funcionaba, en una plataforma sólida para compartir historias de aventura, inspirarse y conectar con otros. Lo primero en lo que me centré al volver de Gibraltar (te lo advertí, tienes que haber leído la entrada anterior) fue dominar el desarrollo de apps móviles.
Elegir un framework para la app móvil
Dada mi experiencia en desarrollo web y el hecho de que es un proyecto en solitario, tenía muchas ganas de encontrar un framework que aprovechara lo que ya sabía hacer. También era importante para mí poder mantener un único código base para las versiones de iOS y Android de la app. Exploré varias opciones y al principio me decidí por Cordova. Cordova parecía un enfoque bastante sencillo y, al usar HTML, CSS y JavaScript, básicamente hablábamos el mismo idioma. En aquel momento me pareció el punto de partida más cómodo. Pasé un tiempo familiarizándome con sus entresijos y usando la 'universidad de YouTube' para ponerme al día. Tras unas semanas, había creado la primera versión de prueba independiente de la app de seguimiento Pebbls. Como prueba de concepto, fue un hito enorme.
Aunque la interfaz que había creado con Cordova era fea, por fin pude empezar a hacer pruebas en el mundo real. Sin embargo, no tardé en darme cuenta de que los mismos aspectos que al principio me atrajeron de Cordova eran también su talón de Aquiles. Cordova parecía estar bien para crear una app con HTML/JavaScript de verdad que se pudiera empaquetar en un contenedor y desplegar en dispositivos móviles, pero conseguir una funcionalidad nativa real era otra historia. Resultaba inconexo y limitante, sobre todo para funciones que para mí no eran negociables: la ubicación en segundo plano, ejecutar tareas periódicas en segundo plano o interactuar con el sistema de archivos, entre otras. Ahora no recuerdo los problemas concretos, pero decidí cortar por lo sano y empezar de nuevo. Pasé por este mismo proceso con cuatro frameworks en total: Cordova, Flutter, Ionic y, por último, React Native.

Elegir el framework adecuado se convirtió en un proceso lento y frustrante. Creé algo parecido a un prototipo de app de seguimiento en cada uno de ellos. Me llevó mucho tiempo (un par de meses), pero al final mereció la pena y tomar la decisión final fue muy fácil: el claro ganador para mí fue React Native (con Expo y EAS), y no he mirado atrás.
React Native me llamó mucho la atención, no solo por ser un framework moderno y capaz, sino también por la energía y el entusiasmo que lo rodeaban. Hay una comunidad muy activa de desarrolladores, mantenedores y creadores de módulos, y la documentación y los tutoriales son muy completos. El compromiso con la evolución de la plataforma, y ver cómo las funciones que yo buscaba se desarrollaban e implementaban activamente y tan rápido, me dio mucha tranquilidad. No me decepcionó.
La evolución de la app de seguimiento Pebbls




Usar React Native y el flujo de trabajo gestionado de Expo con EAS como desarrollador en solitario ha cambiado las reglas del juego: ahora que le he pillado el truco, puedo desarrollar y desplegar con muchos menos quebraderos de cabeza. Pasar de un sistema basado en HTML y CSS, como Cordova, al framework React en realidad no fue muy doloroso. Todavía más impresionante es cómo el pipeline de compilación de EAS se encarga sin esfuerzo de tareas complejas como los certificados y la firma de claves, que de otro modo pueden consumir horas cuando las hacen a mano simples mortales como yo, que no se dedican a eso a diario. Además de todo eso, una de las mayores ventajas para mí es lo fácil que resulta detectar errores (con herramientas como Logrocket), implementar correcciones y enviar actualizaciones over-the-air a los usuarios. Puedo completar estas actualizaciones en cuestión de minutos, desde que recibo un informe de error hasta que la corrección llega a los dispositivos de los usuarios.
Pruebas, pruebas y más pruebas
Crear cualquier software implica un programa de pruebas riguroso. Cuantos más escenarios podamos explorar, mejor preparados estaremos para garantizar una experiencia de usuario fluida y menos probable será que los usuarios se topen con errores en el mundo real. Aunque los simuladores y las herramientas para falsear la ubicación cumplen su función, llega un momento en que tienes que ser valiente, abrir la puerta, salir, recordarle a tu cuerpo lo que es la vitamina D y hacer pruebas en el ancho mundo. A medida que la primera versión totalmente funcional de la app de seguimiento Pebbls se acercaba a estar lista, me vi llevando 2 o 3 dispositivos a todas partes. Estos dispositivos registraban cada uno de mis movimientos y lo enviaban todo al servidor de Pebbls. Al volver a casa, tenía un tesoro de datos que analizar. Este proceso fue muy valioso para detectar y eliminar errores, además de para mejorar el rendimiento.
Probando la app de seguimiento Pebbls en ruta
La siguiente fase de pruebas consistía en llevar la app a otra aventura en el mundo real. Ya había algunos beta testers por ahí haciendo precisamente eso, pero para mí era importante hacerlo también, para vivir en primera persona lo mejor y lo peor de la app. Así que, tras un retraso por el Covid (ver la entrada anterior), eso es exactamente lo que hice. Lucy y yo pasamos 6 meses pedaleando por Europa y Turquía hasta Georgia. Registramos nuestra ruta durante todo el camino, parando de vez en cuando, a menudo en la ladera de una montaña o en una costa escarpada, para corregir errores y seguir desarrollando funciones. Esta prueba en el mundo real fue crucial: me permitió entender cómo se comportaría la app en distintas condiciones de GPS y de red. Esta experiencia se convirtió en una parte esencial del desarrollo de la app y la hizo más sólida y fiable para otros aventureros.






Escuchar a los usuarios y mejorar continuamente
Pebbls no va solo de registrar tu viaje; va de contar historias reales e inspirarse, va de la comunidad de aventureros y exploradores que usan la plataforma. Pido activamente a los usuarios su opinión y sus comentarios sobre su experiencia. Estas ideas y sugerencias son clave para dar forma a las funciones y al funcionamiento de la app. Muchas de las mejoras que tiene Pebbls hoy nacieron de sugerencias de usuarios: integrar el soporte para GPX y Strava, añadir nuevos iconos de pebbls, mejorar la interfaz o aumentar el rendimiento. Tus comentarios son el motor de esta evolución continua. Lanzo actualizaciones con regularidad basadas en vuestras sugerencias, para que Pebbls crezca y responda a las necesidades de aventureros como tú.
Ponte en contacto
¿Te animas a dar forma al futuro de Pebbls? Me encantaría saber de ti. Comparte tus aventuras, ideas y comentarios a través de la página de contacto o en hello@pebbls.com