TrainHub — Runbook (service down)¶
Procédure d'urgence
Ce document décrit la marche à suivre si TrainHub est inaccessible ou dysfonctionnel en production.
Aide-mémoire¶
| Élément | Valeur |
|---|---|
| Repo | EpitechAfrik/trainhub |
| Projet Vercel | daily-c-language-training-platform |
| URL prod | https://trainhub.vercel.app (défaut code — confirmer le domaine réel sur Vercel) |
| Base de données / Auth | Projet Supabase dédié |
| Sandbox de code | Judge0/Piston — déprécié, repris par devkora (Zeno, Edwin) |
| Emails | Resend |
Étape 1 — Diagnostic initial¶
| Résultat | Signification | Aller à |
|---|---|---|
200 |
App répond, problème localisé (auth, compilation, emails...) | Étape 2 |
5xx |
Erreur applicative ou build cassé | Étape 3 |
| Pas de réponse / DNS | Domaine ou hébergement Vercel en cause | Étape 4 |
Étape 2 — L'app répond mais une fonctionnalité est cassée¶
Connexion/authentification impossible¶
- Vérifier le statut du projet Supabase (dashboard → Project Status).
- Vérifier
NEXT_PUBLIC_SUPABASE_URL/NEXT_PUBLIC_SUPABASE_ANON_KEYsur Vercel (vercel env ls). - Vérifier
proxy.ts/lib/supabase/proxy.tsn'a pas régressé (rafraîchissement de session).
Compilation de code (/api/compile, Recode) ne fonctionne plus¶
Backend Judge0 déprécié
Vérifier d'abord si devkora (module Zeno, repris par Edwin) a déjà remplacé Judge0/Piston sur l'environnement concerné — dans ce cas, se référer à sa documentation côté Zeno plutôt qu'aux étapes ci-dessous.
Voir Diagnostics → Judge0 et Erreurs courantes → Exécution de code. Le cas le plus fréquent (ancien backend) : JUDGE0_API_URL non configuré en prod ou instance Judge0 down.
Rappels d'entraînement non envoyés¶
Voir Erreurs courantes → Cron — vérifier CRON_SECRET et le statut du cron sur le dashboard Vercel.
Étape 3 — Erreur 5xx / build cassé¶
# Historique des déploiements et statut du dernier build
vercel ls daily-c-language-training-platform
vercel inspect <deployment-url> --logs
- Identifier le dernier déploiement en échec et lire les logs de build.
- Si le build échoue sur une erreur applicative (pas TypeScript, car
ignoreBuildErrors: trueles laisse passer — voir overview.md), vérifier les logs runtime : - Si un déploiement récent est en cause, revenir au déploiement précédent stable depuis le dashboard Vercel (Promote to Production sur le déploiement antérieur) le temps d'investiguer — action réversible mais visible en prod, à faire avec l'accord de l'équipe si possible.
Étape 4 — Domaine / hébergement inaccessible¶
- Vérifier le statut de Vercel : vercel-status.com (ou équivalent).
- Vérifier la configuration du domaine personnalisé (si applicable) dans Project → Settings → Domains sur Vercel.
- Si aucun domaine personnalisé n'est configuré et que
trainhub.vercel.apprépond, le problème est probablement côté DNS d'un domaine personnalisé récemment ajouté/retiré.
Après résolution¶
- Noter la cause réelle et la correction apportée dans troubleshooting.md pour que le prochain incident similaire se résolve plus vite.
- Si l'incident impliquait des données étudiantes (import, reset de mot de passe en masse, etc.), vérifier qu'aucune donnée n'a été corrompue via les requêtes de diagnostics.md.