App 21Million Academy

App Android e iOS per seguire i corsi dell'accademia, con video protetti e interfaccia in stile community.

Tecnologie
Flutter, Riverpod, Firebase, Codemagic
Area
Software
App 21Million Academy: schermata 1App 21Million Academy: schermata 2App 21Million Academy: schermata 3

Il punto di partenza

La 21Million Academy vendeva corsi di finanza su un sito WordPress con LearnDash e BuddyBoss. Gli iscritti chiedevano di poter seguire le lezioni dal telefono, con i video protetti come sul sito e lo stesso account.

Il problema era tecnico: le API ufficiali di LearnDash mostrano il catalogo, ma non danno i corsi di un utente con i suoi progressi, non permettono di segnare una lezione come completata e non hanno un login pensato per un’app. Anche il plugin di VdoCipher genera il codice per vedere un video solo dentro le pagine del sito, senza controllare se chi guarda è iscritto al corso.

Cosa abbiamo fatto

Abbiamo scritto l’app in Flutter, che produce da un solo codice l’app Android e quella iOS. Per farla parlare con il sito abbiamo scritto prima un plugin ponte per WordPress, con le API che mancavano: login a token, corsi dell’utente, progressi, completamento delle lezioni, codice per il video.

Quando il sito è passato a un backend su misura, il nuovo server ha ripreso le stesse API una per una. All’app è bastato cambiare l’indirizzo del server, senza riscrivere il codice.

La protezione dei video funziona così: l’app chiede di vedere una lezione, il server controlla che l’utente sia iscritto, ricava da solo quale video corrisponde e chiede a VdoCipher un codice valido 5 minuti, con una filigrana che mostra l’email dello studente. La chiave segreta di VdoCipher resta sul server.

La pubblicazione è in parte automatica. La build iOS parte su Codemagic e arriva su TestFlight, mentre il pacchetto Android si carica su Google Play con uno script. Su Android l’app è pubblicata senza acquisti interni, come chiedono le regole di Google. Su iOS Apple ha chiesto l’acquisto dei corsi dentro l’app, ed è la parte ancora in lavorazione.

Com’è fatto

  • Flutter, con Riverpod per lo stato e go_router per la navigazione
  • Login con token e rinnovo automatico, salvati in modo protetto sul dispositivo
  • Catalogo, dettaglio del corso, programma e lezioni con navigazione avanti e indietro
  • Player VdoCipher nativo, con ripresa dal punto in cui ci si era fermati
  • Commenti sotto le lezioni, certificati e gestione dei dispositivi collegati
  • Community: bacheca, elenco membri, messaggi privati, blocco e segnalazione
  • Notifiche push con Firebase
  • Cancellazione dell’account dall’app

Risultato

Gli iscritti seguono i corsi dal telefono con lo stesso account del sito, e i progressi restano allineati fra app e sito. I video sono protetti allo stesso livello del sito, perché il controllo lo fa sempre il server. Il passaggio da WordPress al backend nuovo non ha richiesto di riscrivere l’app.

Vuoi qualcosa di simile? ParliamoneTutti i lavori