mission Réservé All-in

Mets ton app en ligne

Rejoins-le pour progresser et valider tes étapes.

Se connecter pour rejoindre
Le contexte

BRIEFING MISSION

Jusqu'ici ton app tournait sur ta machine. Sur localhost, derrière ton terminal, vivante seulement quand tu es là. C'est parfait pour construire, c'est nul pour prouver. Une app qui vit sur Internet, c'est une app que tu peux envoyer à quelqu'un sans qu'il ait à installer quoi que ce soit. C'est le moment où ton projet arrête d'être un exercice et devient quelque chose qui existe pour de vrai.

Cette mission débloque la dernière marche de la S3 : ton app a une adresse, elle répond, et n'importe qui sur la planète peut la charger. C'est aussi là que tu encaisses une vérité que tous les devs connaissent : ce qui marche en local ne marche pas forcément en prod. La prod, c'est une autre machine, avec d'autres variables, d'autres secrets, d'autres règles, souvent un autre système d'exploitation. On va faire le pont proprement, en gardant la discipline vibecoding : un seul changement à la fois, on inventorie avant d'agir, et tout raté part au JOURNAL.

Consigne & checklist

OBJECTIFS MISSION

Consigne et checklist

Ta mission, que tu choisis d'accepter épicétou, est de mettre ton app en ligne : une URL publique qui répond depuis un autre appareil que le tien.

La mission sera considérée comme réussie si…

  • Ton app a une URL publique (ex. https://mon-app.vercel.app ou https://mon-app.up.railway.app) sur laquelle on peut cliquer et tomber sur ton écran d'accueil.
  • Tu as une capture d'écran de ton app chargée depuis un autre appareil (ton téléphone en 4G, WiFi coupé), avec l'URL visible dans la barre d'adresse.
  • Tu peux dire sur quel hébergeur tu es et nommer une variable d'environnement que tu as dû reporter en prod (la preuve que tu as fait le pont .env local → dashboard).
  • Si ton app a une tâche planifiée, tu sais dire comment tu l'as réglée (cron de l'hébergeur, VPS always-on, ou « pas encore, j'assume le caveat »).

Pour aller plus loin

  • Configure un nom de domaine custom à la place de l'URL par défaut de l'hébergeur (la plupart le proposent gratuitement avec un domaine que tu possèdes déjà).
  • Si ton app a une tâche planifiée, branche-la sur le planificateur natif de l'hébergeur (Vercel Cron, Render Cron Jobs) plutôt que de laisser un cron local s'éteindre avec ton Mac.
  • Ajoute un health check : une route /health qui répond ok, et tu sais d'un coup d'œil si ton service est vivant sans recharger toute l'app.
Le pas-à-pas

ETAPES

La mission est découpée en étapes progressives :

  1. 1
    Étape 1 — Choisis l'hébergeur selon ta stack. Tu ne choisis pas au hasard, tu choisis selon ce que tu as construit. La carte de référence :
Ta stackOù tu déploiesPourquoi
App web JS · Next.js · React · ViteVercelBuild et déploiement automatiques depuis Git, gratuit pour commencer, URL en une commande
App Python · Docker (FastAPI, Flask, worker)Railway ou RenderComprend ton Dockerfile, gère la base et les variables, pas de serveur à administrer
App lourde, plusieurs services, besoin always-onPetit VPS (Hetzner, OVH, DigitalOcean)Tu contrôles tout, ta machine tourne 24h/24, idéal si tu as des tâches planifiées
Règle simple : si tu hésites, prends le plus simple qui sait lire ce que tu as construit. Front JS → Vercel. Back Python avec un Dockerfile → Railway ou Render. Tu ne montes un VPS que si tu as une vraie raison (always-on, contrôle total, plusieurs services). On en parle au coaching avant que tu cliques.
  1. 1
    Étape 2 — Mets ton code sur Git si ce n'est pas déjà fait. La plupart des hébergeurs déploient depuis un repo. Vérifie d'abord que tes secrets ne partent pas avec.
BASH
# Est-ce que .env est bien ignoré ?
git check-ignore .env
# Doit afficher ".env". Si la commande ne renvoie RIEN, .env n'est pas ignoré : danger.

Si .env n'est pas ignoré, ajoute-le à .gitignore avant le moindre commit. Un secret poussé sur GitHub est un secret cramé, même si tu le supprimes après : il reste dans l'historique du repo, accessible à qui sait remonter les commits.

BASH
git status            # vérifie que .env n'apparaît PAS dans les fichiers à committer
git add .
git commit -m "Prêt pour le déploiement"
git push
  1. 1
    Étape 3 — Inventaire avant d'agir : liste tes variables d'environnement. Avant de déployer, ouvre ton .env local et fais l'inventaire. Le .env ne monte jamais tel quel en prod. Il est dans ton .gitignore (et il DOIT l'être), donc il ne part pas avec ton code. Tu vas reporter chaque variable à la main dans le dashboard de l'hébergeur. Prompt à donner à Claude Code :
JAVASCRIPT
Lis mon fichier .env et liste toutes les variables d'environnement que mon app utilise réellement (cherche les os.getenv / process.env dans le code, pas juste le contenu du .env). Pour chacune, dis-moi : son rôle, si c'est un secret (clé API, token, mot de passe) ou une config publique, et ce qui se passe si elle manque. Sors un tableau prêt à recopier dans un dashboard d'hébergeur. Ne modifie aucun fichier.

Note bien la frontière : un secret (token Notion, clé APIAPI : ouvre la porte aux fonctionnalités logicielles., mot de passe base) ne doit JAMAIS finir côté client, c'est-à-dire dans une variable exposée au navigateur. Sur Next.js, tout ce qui commence par NEXT_PUBLIC_ est visible par tout le monde dans les DevTools. Concrètement : NEXT_PUBLIC_API_URL (une URL publique) → ok ; NEXT_PUBLIC_STRIPE_SECRET (un secret) → catastrophe, tu viens d'afficher ta clé à la terre entière. Côté Vite, c'est le préfixe VITE_ qui joue ce même rôle d'exposition publique.

  1. 1
    Étape 4 — Vérifie que le build passe en local d'abord. Avant d'envoyer en prod, lance le build de production sur ta machine. Le serveur de dev est permissif ; le build, lui, est strict. La majorité des erreurs « KO en prod » se voient déjà ici, et c'est dix fois plus rapide à corriger en local qu'en attendant un déploiement à distance.
BASH
# App Next.js / JS
npm run build

# App Docker (simule exactement ce que fera l'hébergeur)
docker build -t mon-app .

Si ça casse en local, ça cassera en prod. Corrige ici. Demande à Claude Code de lire la sortie d'erreur en entier (elle nomme le fichier et la ligne), puis applique un seul changement à la fois et relance le build jusqu'à ce qu'il passe vert.

  1. 1
    Étape 5 — Déploie.

Cas Vercel (app web JS / Next / Vite). Le plus court chemin : connecte ton repo GitHub sur vercel.com, Vercel détecte le framework tout seul. Ou en ligne de commande :

BASH
npm i -g vercel
vercel
# suis les questions (projet, dossier, framework détecté), puis pour la mise en prod :
vercel --prod

Avant ou juste après, ajoute tes variables (Settings → Environment Variables dans le dashboard, ou en CLI) :

BASH
vercel env add NOM_DE_LA_VARIABLE production

Cas Railway / Render (app Python / Docker). Connecte ton repo, l'hébergeur lit ton Dockerfile (ou détecte ton requirements.txt), lance le build, te donne une URL. Ici l'ordre compte : reporte tes variables dans l'onglet Variables / Environment du dashboard AVANT que le service démarre, sinon il crashe au premier lancement faute de trouver sa config. Prompt à donner à Claude Code pour préparer le terrain :

JAVASCRIPT
Mon app doit se déployer sur [Vercel | Railway | Render]. Vérifie que tout ce qu'il faut est présent et correct : le build command, le start command, le port lu depuis une variable d'environnement (process.env.PORT / os.getenv("PORT")) et PAS codé en dur, le host d'écoute en 0.0.0.0 et pas 127.0.0.1, et un Dockerfile propre si Docker. Liste-moi ce qui manque ou ce qui risque de casser en prod, sans rien modifier encore. Ensuite on corrigera un changement à la fois.
Le caveat « toujours allumé » · si ton app a une tâche planifiée (un cron, un relevé quotidien, un worker), souviens-toi de la Mission 3.1 du Captage : un cron ne se déclenche que quand la machine tourne. Vercel et Render endorment les services gratuits inactifs ; un cron local s'éteint avec ton Mac. Pour un « tous les jours » garanti, il te faut un hôte always-on (VPS) ou le planificateur natif de l'hébergeur (Vercel Cron, Render Cron Jobs). On en parle au coaching selon ce que ton app doit faire.
  1. 1
    Étape 6 — Prouve depuis un autre appareil. Une fois l'URL obtenue, ne la teste pas seulement dans ton navigateur. Sors-la de chez toi : ouvre-la sur ton téléphone en 4G, WiFi coupé. Si ça répond, c'est vraiment en ligne. Si ça ne répond que sur ta machine ou que sur ton WiFi maison, c'est encore du local déguisé. C'est cette ouverture-là, depuis un réseau qui n'est pas le tien, qui fait la preuve. Si ça coince, ouvre les logs runtime de l'hébergeur (pas seulement les logs de build) : ils te disent ce que l'app crie au démarrage, et neuf fois sur dix la cause est dans la liste de la correction plus bas.
Réservé All-in

La suite est réservée aux membres du parcours

Rejoins 3 semaines pour créer une App en partant de 0 pour débloquer la suite, les templates et suivre ta progression.