GetThrivin Mobile App
Una experiencia de aprendizaje móvil nativa — rutas de cursos, lecciones en vídeo, check-ins diarios, seguimiento de logros y notificaciones push — construida para el desarrollo de la fuerza laboral en mercados africanos.
Visión general
La app móvil es su propio producto. Mientras el caso de la plataforma GetThrivin cubre todo el stack — API, web, SAML, Coursera — este caso trata sobre el lado nativo: lo que costó construir una experiencia de aprendizaje que se sintiera bien en un teléfono, en una mano, sobre una conexión LTE inestable en algún lugar del África subsahariana. La construí desde cero usando React Native con el managed workflow de Expo, y se despliega tanto en iOS como en Android desde un único código base en TypeScript.
El modelo de estado está construido sobre Zustand — deliberadamente ligero y serializable, lo que hizo posible la historia offline sin recurrir a soluciones pesadas. El progreso de lecciones, los flags de finalización de cursos y el estado de los check-ins diarios viven todos en un store local que sincroniza con la API cuando hay conectividad disponible. Las lecciones en vídeo se manejan con una estrategia de carga progresiva: las miniaturas en baja resolución se cargan inmediatamente, el stream de vídeo se buferea por delante del usuario, y los segmentos completados se cachean para que una segunda visualización no vuelva a descargar. Para aprendices en mercados donde los datos se miden y las redes son poco fiables, esto no es un nice-to-have — es la línea base.
Las notificaciones push funcionan tanto en FCM para Android como en APNs para iOS a través de la capa de Expo Notifications, disparadas por el sistema de jobs BullMQ del lado de la API. Recordatorios de check-in diario, recordatorios de rachas y hitos de finalización de rutas fluyen todos por este pipeline. EAS Build gestiona el pipeline de build y distribución: las actualizaciones OTA para arreglos en la capa JS llegan a los dispositivos sin un ciclo de envío a la tienda, mientras que los cambios en la capa nativa pasan por builds de tienda gestionados por EAS. Esa separación mantuvo alta la velocidad de iteración durante todo el proyecto.
Arquitectura
Lectura del diagrama: La app de React Native / Expo (centro, violeta) mantiene un store Zustand local-first para resiliencia offline — las lecciones y el progreso sobreviven a una caída de red. EAS Build impulsa dos canales de entrega: builds completos de tienda para cambios nativos y actualizaciones OTA para arreglos en la capa JS. La app se comunica directamente con el núcleo de la API de GetThrivin para datos de cursos, autenticación y sincronización de progreso. Las notificaciones push fluyen desde la API a través de FCM (Android) y APNs (iOS) y aterrizan en el dispositivo — caminos de retorno punteados — disparadas por jobs de recordatorio BullMQ del lado del servidor.
El producto móvil no es una web view en una carcasa — es una experiencia nativa construida en torno a las restricciones de los mercados a los que sirve. Offline first, push-first, un solo código base.
Seis cosas entregadas,
tres difíciles resueltas.
Contribuciones clave
- Diseñé y construí la app completa de React Native desde cero usando el managed workflow de Expo.
- Implementé rutas de cursos, reproductor de lecciones en vídeo y seguimiento de logros con estado local-first vía Zustand.
- Diseñé una capa de caché offline para que los aprendices en regiones de baja conectividad pudieran completar lecciones sin conexión activa.
- Integré notificaciones push tanto en FCM (Android) como en APNs (iOS) a través de Expo Notifications.
- Configuré EAS Build para actualizaciones OTA automatizadas y builds de producción para las tiendas.
- Construí flujos de check-in diario y seguimiento de rachas para impulsar la retención de aprendices.
Desafíos resueltos
- Reproducción de vídeo fiable y progreso de lecciones en redes con conectividad pobre o intermitente.
- Mantener un único código base de React Native que se sintiera nativo tanto en iOS como en Android sin hacks específicos de plataforma.
- Entregar un onboarding de baja fricción para usuarios de fuerza laboral que no eran usuarios avanzados de apps.
Qué hay bajo el capó.
¿Listo para arreglar, construir
o escalar?
30 minutos, conmigo personalmente. Leo tu sistema como un archivo de logs y te digo qué haría primero. Sin presentaciones, sin embudo de ventas.
— Davor Majc, fundador, Numen



