Aller au contenu

Aide-mémoire — TrainHub

Référence rapide pour TrainHub, la plateforme d'entraînement quotidien au langage C (C-Pool).

Accès rapides

Élément Lien
Repo (org EPITECH) EpitechAfrik/trainhub
Production https://trainhub.vercel.app (défaut de code — confirmer le domaine réel sur le dashboard Vercel avant toute intervention)
Projet Vercel daily-c-language-training-platform (voir .vercel/project.json en local)
Base de données / Auth Projet Supabase dédié — voir dashboard Supabase de l'équipe

Repo perso historique

Le code a été développé et versionné pendant longtemps sur le repo personnel YemalinModeste/c-training-abj. Il a été poussé (branches main + development) vers l'org EPITECH sous le nom trainhub pour transmission. Le repo perso reste la source historique, mais le repo EpitechAfrik/trainhub est la référence à jour pour la suite.

Stack en un coup d'œil

Composant Techno
Framework Next.js 16 (App Router), React 19, TypeScript
UI Tailwind CSS 4, Shadcn UI, éditeur Monaco
Auth + DB Supabase (PostgreSQL + Auth)
Exécution de code Judge0 (auto-hébergé) / Piston — déprécié, repris par devkora (Zeno, Edwin)
Emails Resend
Hébergement Vercel (+ 1 cron quotidien)

Commandes essentielles

pnpm install
pnpm dev      # localhost:3000
pnpm build
pnpm lint

Variables d'environnement critiques

Variable Rôle
NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY Client Supabase (browser/SSR)
SUPABASE_SERVICE_ROLE_KEY Client admin (routes API privilégiées, cron)
CRON_SECRET Auth du cron Vercel — obligatoire, sinon la route échoue volontairement (fail-closed)
JUDGE0_API_URL / JUDGE0_API_KEY Sandbox d'exécution de code (défaut http://localhost:2358) — legacy, en cours de remplacement par devkora (Zeno)
RESEND_API_KEY / RESEND_FROM_EMAIL Envoi d'emails

Détail complet : Vue d'ensemble.

Défaut connu — qualité de certaines questions

Des étudiants du C-Pool d'Abidjan ont remonté que certaines questions de la banque sont mal rédigées : il arrive qu'un étudiant sélectionne la bonne réponse et qu'elle soit quand même comptée invalide (énoncé/réponse mal renseignés en base, pas un bug applicatif). À corriger au cas par cas dans l'admin — voir Erreurs courantes → Qualité des questions.

En cas de pépin