Aller au contenu principal

Expo : un générateur de quiz Cyber

Dans cette série, vous allez créer pas à pas une véritable application mobile (Android, iOS) et Web : un générateur de quiz sur la cybersécurité.

Le joueur choisit un thème (mots de passe, hameçonnage, réseaux et Wi-Fi), un niveau et un nombre de questions : l'application génère alors un quiz unique, tiré au hasard, corrige chaque réponse, calcule le score et l'enregistre dans un classement.

Écran d'accueil de l'application

Ce que vous allez apprendre
  • Expo et React Native : créer une application mobile avec JavaScript et TypeScript ;
  • les composants, l'état (useState, useReducer) et les effets (useEffect) ;
  • la navigation entre écrans avec Expo Router ;
  • une base de données Supabase (PostgreSQL) sécurisée par la RLS et des fonctions SQL ;
  • le code asynchrone robuste : chargement, erreurs, annulation des requêtes, double-clic... ;
  • Git et GitHub : commits, branches, Pull Requests ;
  • la mise en ligne de la version Web et la création d'une application Android.

Les écrans de l'application​

Générateur de quizQuestion corrigéeClassement
GénérateurQuestionClassement

Une approche « faire d'abord, comprendre ensuite »​

Dans la plupart des séances, vous commencez par le TP : vous écrivez le code, vous le faites fonctionner, puis la partie Notions théoriques explique en détail ce que vous venez de faire. Lorsque la notion est trop nouvelle pour être pratiquée « à l'aveugle » (modélisation de la base de données, sécurité...), la théorie passe en premier.

La sécurité, fil rouge de la série

Un quiz de cybersécurité se doit d'être... sécurisé ! Tout au long de la série, vous apprendrez à ne jamais faire confiance aux données reçues, à protéger la base de données, à empêcher la triche sur le score et à éviter les bugs liés aux requêtes réseau (réponses dans le désordre, double envoi...).

Les tutoriels de la série​

TutorielContenu
1. Démarrer avec Expoinstaller Expo, créer le projet, Git et GitHub
2. TypeScript pour le quiztypes, données locales, fonctions pures, tests, mélange de Fisher-Yates
3. Composants et stylesbranches Git, JSX, composants, listes, Flexbox, images
4. État et interactionsuseState, score, machine à états useReducer, useEffect
5. Navigation avec Expo Routerécrans, générateur de quiz, paramètres d'URL validés
6. La base de données SupabaseMCD, tables, données, RLS, connexion
7. Données asynchrones robusteschargement, erreurs, AbortController, Storage
8. Joueurs et sécuritéconnexion anonyme, pseudo, fonctions SQL, score calculé par le serveur
9. Le classementfonction SQL de classement, FlatList
10. Qualité et déploiementrecette, mise en ligne Web, application Android
11. Aller plus loinaccessibilité, retour haptique, proposer des questions

Prérequis​

  • les bases de JavaScript (variables, fonctions, tableaux, objets) ;
  • un ordinateur avec Node.js (version 22.13 ou plus récente), Git et VS Code ;
  • un compte GitHub et, plus tard, un compte Supabase (gratuits) ;
  • idéalement un téléphone Android ou iOS avec l'application Expo Go (sinon, le navigateur suffit).
remarque

Cette série s'inspire du projet Un quiz sur la Cyber !, réalisé avec Next.js : ici, l'application est mobile et chaque étape est plus détaillée.