Inicio/ trabajo/GetThrivin Mobile App
Desarrollador móvil principal · 2024 · Mercados africanos

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.

Rol Lead Mobile Developer
Duración 2024
Mercados Despliegue africano · iOS + Android
Plataformas ios · android
Dominio LMS · RR. HH. · Aprendizaje móvil
Plataformas lanzadas
iOS + Android
un solo código base
Pipeline de build
EAS
OTA + tienda automatizados
Soporte offline
mercados de baja conectividad
Canales push
FCM + APNs
vía Expo Notifications
GetThrivin Mobile App screenshot

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

~/getthrivin-mobile/architecture/mobile-map.svg
01 — DISPOSITIVO (iOS · Android)▶ leccióncheck-ininsigniasZustand store (local-first)progreso · rachas · offline cacheReact Native · Expo · TypeScript02 — EAS BUILD PIPELINEEAS BuildiOS + Androidbuilds de tiendaEAS UpdateOTA · capa JSsin revisión de tienda03 — GETTHRIVIN APINúcleo APIExpress · TypeScript · RESTrutas · progreso · auth04 — ENTREGA PUSHFCMAndroidpasarela pushAPNsiOSpasarela pushExpo managed workflow · recordatorios disparados por BullMQ · analítica Firebase · sincronización Zustand offline-first05 — INFRAESTRUCTURA

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.
Davor Majc, Lead Mobile Developer / GetThrivin
03 Lo que entregué · desafíos resueltos

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.
04 Stack tecnológico

Qué hay bajo el capó.

React NativeExpoEAS BuildZustandTypeScriptPush (FCM/APNs)Offline cacheVideo
Hablemos

¿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

Qué obtienes en la llamada
→ un diagnóstico de una página
→ 2–3 formas de solución, ordenadas por impacto
→ coste aproximado + plazo para cada una
→ sí/no — ¿soy la elección adecuada?
+386 40 828 474 · Blejska Dobrava, SI