
Le projet
Dans beaucoup d'écoles, l'évaluation reste artisanale : des outils différents d'un enseignant à l'autre, des centaines d'heures de correction manuelle par an, des notes qui arrivent une à trois semaines après l'examen et peu de garde-fous contre la triche. MyExams répond à ces problèmes en centralisant tout le cycle d'évaluation, de la création de l'examen jusqu'à la consultation des notes. C'est le projet final de notre Mastère Chef de projet digital à IRIS Paris, mené en équipe de cinq sur dix semaines.
Fonctionnalités
La plateforme s'organise autour de trois espaces. L'administrateur gère les classes, élèves, enseignants, matières et diplômes, avec import en masse depuis un fichier Excel et tableaux de bord globaux. L'enseignant crée ses examens manuellement ou les génère par IA à partir d'un PDF de cours, avec des questions de type QCM simple ou multiple, réponse ouverte ou code — ces dernières se répondent dans un éditeur Monaco ; les QCM sont corrigés automatiquement et il garde la main pour corriger le reste. L'élève passe ses examens dans une interface sécurisée par trois mesures anti-triche (questions randomisées, détection de sortie d'onglet, corrections verrouillées jusqu'à la fin de la période d'examen), puis consulte ses notes et son historique par matière.
Architecture
Le front est construit avec Next.js (App Router), HeroUI, Tailwind CSS et NextAuth, et sépare son routage par rôle. L'API repose sur AdonisJS et PostgreSQL, structurée en controllers, services, repositories et middlewares. Socket.io gère le temps réel, notamment le timer des examens. Chaque fichier envoyé est scanné par ClamAV ; la génération d'examens passe par le Vercel AI SDK vers l'API Anthropic, chaque appel étant tracé par LangSmith ; les e-mails transactionnels partent par Resend. Côté sécurité : jeton d'authentification chiffré dans un cookie httpOnly, permissions par rôle, validation stricte des entrées et rate limiting sur la connexion.
Infrastructure et déploiement
L'application tourne sur un VPS OVH avec deux environnements distincts, testing et production, derrière Caddy en reverse proxy et PM2 pour les processus. GitHub Actions déploie automatiquement à chaque push sur main ou sur la branche de production, avec vérification du démarrage et rollback quasi instantané vers la version précédente. L'API est documentée avec Swagger.