Soutenance de Projet — Architecture REST & SPA
Mise en place d'une architecture Client-Serveur découplée communiquant via une API RESTful.
async/await en remplacement des callbacks imbriqués.bcrypt avant l'insertion en base.JWT_SECRET) dans un fichier .env, garantissant la sécurité en production.Implémentation de Middlewares Express (ex: requireTeacher, authenticateToken).
Blocage avec statut HTTP 403 pour toute tentative d'élévation de privilège non autorisée.
Mise en place de Navigation Guards avec Vue Router.
Gestion de la navigation client et redirection automatique des utilisateurs non authentifiés.
Sécurisation des en-têtes HTTP contre le ClickJacking, le reniflage de type MIME et les failles XSS.
Multer pour intercepter les flux multipart/form-data.adm-zip.Exemple de l'implémentation du flux binaire pour le téléchargement centralisé des rendus.
app.get('/api/rendus/zip/:saeId', requireTeacher, async (req, res) => {
const zip = new AdmZip();
const rendus = await db.allAsync('SELECT * FROM rendus WHERE sae = ?', [id]);
rendus.forEach(rendu => {
const fileName = `${rendu.nom}_${rendu.prenom}_Rendu.pdf`;
zip.addLocalFile(rendu.fullPath, '', fileName);
});
res.set('Content-Disposition', 'attachment; filename=Rendus.zip');
res.send(zip.toBuffer());
});
/client et /server.main pour le code stable.Lien du suivi Google Sheets :
Consulter le RoadmapApproche agile avec maquettage itératif permettant un déploiement et des tests rapides.
Exploitation de l'API existante pour un client natif avec notifications push.
Intégration de WebSockets pour une discussion en temps réel par équipe.
Tableaux de bord de suivi de l'assiduité et des taux de réussite.
Le développement s'appuie sur une API robuste et une interface modulaire. Ce choix d'architecture RESTful ouvre la voie à une scalabilité aisée pour de futurs besoins pédagogiques.