Mode d'emploi — de zĂ©ro Ă  publiĂ©

Application mobile

Une app iOS + Android Ă  partir de ton backend Next.js existant, avec React Native + Expo. Ce n'est pas un projet Ă  part — c'est une couche en plus sur ce que tu as dĂ©jĂ .

Sommaire
01Initialiser le projet Expo
02Exposer le backend en API
03Authentification mobile — Better Auth
04Style — NativeWind
05Écrans & fonctionnalitĂ©s
06Build & publication — EAS
RĂšgle du jeu : tu tapes chaque commande toi-mĂȘme dans ton terminal, dans l'ordre. Tu ne passes Ă  l'Ă©tape suivante que quand la case « vĂ©rification » est cochĂ©e. Si une commande plante, copie-colle l'erreur exacte — on corrige ensemble, tu ne devines pas.

PrĂ©requis important : ce guide part du principe que tu as dĂ©jĂ  un projet Next.js avec Prisma/Supabase et Better Auth en place (voir les autres guides). L'app mobile ne recrĂ©e pas de backend — elle appelle celui qui existe dĂ©jĂ .

Réutilisable vs spécifique : les étapes réutilisable sont valables pour n'importe quelle app mobile de ta stack. Les étapes spécifique dépendent du produit que tu construis.
📖 C'est quoi chaque techno (Expo, React Native, NativeWind...) ? Le lexique complet est sur la page d'accueil →
01
Réutilisable

Initialiser le projet Expo

Une app qui démarre sur ton téléphone via Expo Go, dans un dossier séparé du projet web.

Prérequis : Node.js et pnpm installés. L'app Expo Go installée sur ton téléphone (App Store / Play Store).

  1. Crée le projet Expo, à cÎté de ton projet web
    npx create-expo-app@latest mon-app-mobile --template default
    cd mon-app-mobile
    C'est un dĂ©pĂŽt sĂ©parĂ© du projet Next.js — le mobile et le web restent deux applications distinctes qui parlent Ă  la mĂȘme base de donnĂ©es via l'API.
    👁 Comment voir le rĂ©sultat : tape ls dans mon-app-mobile — app/, package.json doivent exister.
  2. Initialise Git
    git init
    git add -A
    git commit -m "chore: init projet Expo"
    👁 Comment voir le rĂ©sultat : tape git log --oneline — une ligne avec ton message de commit doit s'afficher.
  3. Lance le serveur de développement
    npx expo start
    Un QR code s'affiche dans le terminal. Scanne-le avec l'appareil photo (iOS) ou l'app Expo Go (Android) pour ouvrir l'app sur ton téléphone, en direct.
    👁 Comment voir le rĂ©sultat : l'app s'ouvre sur ton tĂ©lĂ©phone avec l'Ă©cran par dĂ©faut d'Expo. Modifie un texte dans app/index.tsx, enregistre — le changement doit apparaĂźtre sur le tĂ©lĂ©phone en 1-2 secondes, sans rĂ©installer l'app (hot reload).
Vérification
02
Réutilisable

Exposer le backend en API

Ton app mobile peut appeler ton backend Next.js par HTTP, comme n'importe quel client.

Prérequis : le projet Next.js existe déjà (Prisma + Supabase branché).

  1. Comprends la différence clé
    Les Server Actions (utilisĂ©es dans le web) ne sont appelables que depuis une page Next.js du mĂȘme projet — pas depuis une app mobile. Il faut donc des Route Handlers classiques : des vraies routes API avec une URL, comme une API REST.
  2. Crée une route API
    // app/api/produits/route.ts
    export async function GET() {
      const produits = await prisma.produit.findMany();
      return Response.json(produits);
    }
    Chaque donnĂ©e dont l'app mobile a besoin doit avoir sa route sous app/api/.... C'est le mĂȘme Prisma, la mĂȘme base — juste exposĂ©e diffĂ©remment.
  3. Autorise les requĂȘtes venant de l'app mobile (CORS)
    Par dĂ©faut, Next.js n'accepte que les requĂȘtes venant de son propre domaine. Ajoute les en-tĂȘtes CORS nĂ©cessaires dans la route, ou un middleware, pour autoriser ton app mobile Ă  appeler l'API en dĂ©veloppement comme en production.
  4. Teste la route depuis un navigateur ou curl
    curl http://localhost:3000/api/produits
    👁 Comment voir le rĂ©sultat : le terminal doit afficher du JSON (ex. [{"id":"...","nom":"..."}]), pas une page d'erreur HTML. Teste ensuite depuis l'app mobile (sur le mĂȘme Wi-Fi que ton ordinateur, avec l'IP locale au lieu de localhost) pour confirmer que la requĂȘte aboutit aussi depuis le tĂ©lĂ©phone.
Vérification
03
Réutilisable

Authentification mobile — Better Auth

Se connecter depuis le téléphone, avec la session gérée en toute sécurité.

Prérequis : Better Auth déjà configuré cÎté serveur Next.js.

  1. Installe le client Better Auth pour Expo
    npx expo install @better-auth/expo expo-secure-store
    Better Auth fournit un client pensĂ© pour React Native — il gĂšre les appels rĂ©seau vers ton serveur d'auth existant.
    👁 Comment voir le rĂ©sultat : @better-auth/expo apparaĂźt dans package.json.
  2. Stocke le token de session de façon sécurisée
    Contrairement au web (cookies), le mobile stocke le token dans expo-secure-store — un espace chiffrĂ© du tĂ©lĂ©phone, pas dans une simple variable ou un fichier en clair.
  3. Crée les écrans connexion / inscription
    MĂȘmes champs que cĂŽtĂ© web (email, mot de passe), mais avec des composants React Native au lieu de shadcn/ui.
    👁 Comment voir le rĂ©sultat : sur ton tĂ©lĂ©phone, crĂ©e un compte test depuis l'Ă©cran d'inscription — puis vĂ©rifie dans Prisma Studio (cĂŽtĂ© projet web) qu'une ligne apparaĂźt dans la table User.
  4. ProtĂšge les Ă©crans qui demandent d'ĂȘtre connectĂ©
    Vérifie la session au lancement de l'app et redirige vers l'écran de connexion si elle est absente ou expirée.
    👁 Comment voir le rĂ©sultat : ferme complĂštement l'app puis rouvre-la — tu dois rester connectĂ© (pas de retour Ă  l'Ă©cran de connexion). DĂ©connecte-toi : tu dois ĂȘtre redirigĂ© vers l'Ă©cran de connexion, et rouvrir l'app ne doit plus te reconnecter automatiquement.
Vérification
04
Réutilisable

Style — NativeWind

Les mĂȘmes classes Tailwind que sur le web, appliquĂ©es Ă  des composants React Native.

Prérequis : étape 1 validée.

  1. Installe NativeWind
    npx expo install nativewind tailwindcss
    Tailwind CSS n'existe pas nativement en React Native (pas de navigateur, pas de vrai CSS) — NativeWind traduit les classes Tailwind en styles React Native au moment de la compilation.
  2. Configure Tailwind pour le projet mobile
    npx tailwindcss init
    Un tailwind.config.js propre au projet mobile — les fichiers scannĂ©s ne sont pas les mĂȘmes que cĂŽtĂ© web (App.tsx, app/**/*.tsx au lieu de app/ Next.js).
    👁 Comment voir le rĂ©sultat : ls tailwind.config.js — le fichier doit exister.
  3. Utilise les classes directement dans les composants
    // exemple
    <View className="flex-1 items-center justify-center bg-white">
      <Text className="text-lg font-bold">Bonjour</Text>
    </View>
    👁 Comment voir le rĂ©sultat : colle cet exemple dans un Ă©cran, enregistre — sur ton tĂ©lĂ©phone, le texte « Bonjour » doit s'afficher centrĂ©, en gras, sur fond blanc. Change bg-white en bg-red-500 pour confirmer que les classes prennent bien effet.
Vérification
05
Spécifique au projet

Écrans & fonctionnalitĂ©s

Le cƓur mĂ©tier de l'app — ce qui change Ă  chaque projet.

Prérequis : étapes 2 et 3 validées.

  1. Mets en place la navigation entre écrans
    npx expo install expo-router
    Expo Router fonctionne par dossiers, comme l'App Router de Next.js — un fichier = un Ă©cran. Le repĂšre est le mĂȘme que celui que tu connais dĂ©jĂ  cĂŽtĂ© web.
    👁 Comment voir le rĂ©sultat : crĂ©e un deuxiĂšme Ă©cran (ex. app/profil.tsx) et un lien vers lui — tape dessus sur ton tĂ©lĂ©phone, tu dois naviguer vers le nouvel Ă©cran avec l'animation de transition native.
  2. Construis les écrans qui appellent tes routes API
    MĂȘme logique que cĂŽtĂ© web (rĂ©cupĂ©rer des donnĂ©es, les afficher, les valider avec Zod avant envoi) — seuls les composants d'affichage changent.
    👁 Comment voir le rĂ©sultat : ouvre l'Ă©cran concernĂ© sur ton tĂ©lĂ©phone — les vraies donnĂ©es de ta base (créées via Prisma Studio ou l'app web) doivent s'afficher, pas des donnĂ©es factices codĂ©es en dur.
  3. GĂšre les notifications push si le projet en a besoin
    npx expo install expo-notifications
    Uniquement si le produit en a l'usage (ex. prĂ©venir un utilisateur) — ne l'ajoute pas par dĂ©faut.
Vérification
06
Réutilisable

Build & publication — EAS

Une app installable, publiée sur l'App Store et le Play Store.

Prérequis : compte Expo (expo.dev), compte développeur Apple et Google si publication réelle visée.

  1. Installe l'outil de build EAS
    npm install -g eas-cli
    eas login
    👁 Comment voir le rĂ©sultat : tape eas whoami — ton nom de compte Expo doit s'afficher.
  2. Configure le projet pour le build
    eas build:configure
    👁 Comment voir le rĂ©sultat : un fichier eas.json apparaĂźt Ă  la racine du projet.
  3. Renseigne les variables d'environnement de prod
    eas secret:create --name API_URL --value https://tondomaine.vercel.app
    L'app mobile en production doit appeler ton backend Next.js déployé, pas localhost.
    👁 Comment voir le rĂ©sultat : eas secret:list doit afficher API_URL dans la liste.
  4. Lance un build de test
    eas build --platform android --profile preview
    Un build « preview » s'installe directement sur un tĂ©lĂ©phone pour tester, sans passer par les stores — plus rapide qu'un cycle de validation complet.
    👁 Comment voir le rĂ©sultat : une fois le build terminĂ© (~10-20 min, suivi sur expo.dev), un lien de tĂ©lĂ©chargement .apk s'affiche dans le terminal — installe-le sur un tĂ©lĂ©phone Android, l'app doit se lancer et appeler ton API de production.
  5. Soumets aux stores quand tu es prĂȘt
    eas build --platform all --profile production
    eas submit --platform all
    La validation Apple prend en général quelques jours ; celle de Google est plus rapide. Prévois cette marge avant une date de lancement.
    👁 Comment voir le rĂ©sultat : le statut de la soumission est visible sur App Store Connect et Google Play Console — il passe de « En cours d'examen » Ă  « ApprouvĂ© » (ou un refus avec le motif, Ă  corriger).
Vérification