GetThrivin Mobile App
Nativna mobilna učna izkušnja — učne poti, video lekcije, dnevni check-in, sledenje dosežkom in push obvestila — zgrajena za razvoj delovne sile na afriških trgih.
Pregled
Mobilna aplikacija je svoj lasten produkt. Medtem ko case GetThrivin platforme pokriva celoten stack — API, splet, SAML, Coursera — ta case govori o nativni plati: o tem, kaj je bilo potrebno, da smo zgradili učno izkušnjo, ki se je počutila pravilno na telefonu, v roki, na slabi LTE povezavi nekje v podsaharski Afriki. Zgradil sem jo od začetka z uporabo React Native in Expo managed workflowa, izdaja pa se tako za iOS kot Android iz ene same TypeScript kode.
State model temelji na Zustand — namerno lahek in serializabilen, kar je naredilo offline zgodbo mogočo brez posega po težkih rešitvah. Napredek lekcij, oznake za dokončanje tečaja in stanje dnevnih check-inov živijo v lokalnem store-u, ki se sinhronizira z API-jem, ko je povezljivost na voljo. Video lekcije so obravnavane s strategijo progressive-load: nizko-resolucijske sličice se naložijo takoj, video stream se buffra vnaprej pred uporabnikom, dokončani segmenti pa so cache-ani, tako da drugo gledanje ne potrebuje ponovnega prenosa. Za učence na trgih, kjer so podatki merjeni in omrežja nezanesljiva, to ni nice-to-have — to je osnova.
Push obvestila tečejo tako na FCM za Android kot APNs za iOS preko Expo Notifications sloja, sprožena s strani BullMQ job sistema na strani API-ja. Dnevni check-in nudgi, opomniki streakov in mejniki dokončanja učnih poti — vse to teče skozi ta pipeline. EAS Build upravlja build in distribucijski pipeline: OTA posodobitve za popravke JS sloja pridejo na naprave brez cikla submitanja v trgovino, medtem ko gredo spremembe nativnega sloja skozi EAS-vodene store builde. Ta razdelitev je ohranila visoko hitrost iteracij skozi celoten projekt.
Arhitektura
Branje diagrama: React Native / Expo aplikacija (v sredini, vijolično) drži Zustand local-first store za offline odpornost — lekcije in napredek preživijo izpad omrežja. EAS Build vodi dva dostavna kanala: polne store builde za nativne spremembe in OTA posodobitve za popravke JS sloja. Aplikacija se neposredno pogovarja z GetThrivin API jedrom za podatke o tečajih, avtentikacijo in sinhronizacijo napredka. Push obvestila potekajo iz API-ja skozi FCM (Android) in APNs (iOS) ter pristanejo na napravi — črtkane povratne poti — sprožena z BullMQ nudge jobi na strani strežnika.
Mobilni produkt ni web view v lupini — gre za nativno izkušnjo, zgrajeno okoli omejitev trgov, ki jim služi. Offline first, push-first, ena sama koda.
Šest stvari dostavljenih,
tri težke rešene.
Ključni prispevki
- Zasnoval in zgradil celotno React Native aplikacijo od začetka z uporabo Expo managed workflow.
- Implementiral učne poti, predvajalnik video lekcij in sledenje dosežkom z local-first stanjem preko Zustand.
- Zasnoval offline cache sloj, da so učenci v regijah s slabo povezljivostjo lahko dokončali lekcije brez aktivne povezave.
- Integriral push obvestila tako na FCM (Android) kot APNs (iOS) preko Expo Notifications.
- Postavil EAS Build za avtomatizirane OTA posodobitve in produkcijske builde za trgovine.
- Zgradil dnevne check-in tokove in sledenje streakom za povečanje retencije učencev.
Rešeni izzivi
- Zanesljivo predvajanje videa in napredek lekcij na omrežjih s slabo ali občasno povezljivostjo.
- Vzdrževanje ene same React Native kode, ki je delovala nativno tako na iOS kot Androidu brez platformno specifičnih hackov.
- Izvedba onboardinga z malo trenja za uporabnike delovne sile, ki niso bili izkušeni uporabniki aplikacij.
Kaj poganja stvari.
Pripravljeni popraviti, zgraditi
ali skalirati?
30 minut, z mano osebno. Preberem vaš sistem kot dnevniško datoteko in povem, kaj bi naredil najprej. Brez prezentacij, brez prodajnega lijaka.
— Davor Majc, ustanovitelj, Numen



