Séminaire
Objectifs
- Créer une application Web avec Vue.js et Supabase selon un cahier des charges.
Rendu
- GitHub Classroom : https://classroom.github.com/a/Pq26vRO2
- Délai : 2 semaines
- Séminaire noté
Estimation
- Créer un ficher
report.mddans le dossier du dépôt. - Estimer le temps nécessaire pour réaliser ce travail dans le rapport.
- Découper le travail en tâches pour faciliter l'estimation.
- Une fois terminé, comparer le temps estimé avec le temps réellement passé.
| Tâche | Temps estimé | Temps passé | Commentaire |
|---|---|---|---|
| Estimation | 10m | 15m | ... |
| ... | ... | ... | ... |
| Total | 2h | 1h30 | ... |
Cahier des charges
Créer un quiz en Vue.js avec une base de données sur Supabase.
- Utiliser Vue Router pour la navigation entre les pages.
- L'application doit comporter au moins trois pages :
- Page d'accueil qui propose de commencer le quiz (accès la page de quiz) ou de gérer les questions (accès à la page d'administration).
- Page de quiz qui affiche les questions pour y jouer avec un bouton pour soumettre les réponses et afficher le score à la fin.
- Page d'administration pour ajouter, modifier et supprimer des questions.
- Le quiz doit comporter des questions à choix multiples avec 4 réponses possibles, dont une seule est correcte.
- Les questions et les réponses doivent être stockées dans une base de données Supabase.
- L'application doit être responsive et utilisable sur mobile et desktop.
Quelques idées d'améliorations possibles :
- Un système de score pour les joueurs.
- Une page de classement pour afficher les meilleurs scores.
- Des catégories de questions.
- Une recherche pour les questions dans la page d'administration.
- Plusieurs types de questions (p. ex. vrai/faux, réponses ouvertes, nombre variables de réponses possibles, …).
- Une pagination pour les questions dans la page d'administration.
- Un système d'authentification pour restreindre l'accès à la page d'administration.
- Statistiques sur les questions (p. ex. taux de réussite, …).
- Ajout des questions via un fichier CSV ou Excel.
Test
Dans eslint.config.ts, remplacer pluginVue.configs['flat/essential'] par pluginVue.configs['flat/recommended'].
Exécuter la commande npm install -D eslint-plugin-prettier.
Ajouter Prettier dans ESLint en modifiant le fichier eslint.config.ts (parfois caché sous package.json) :
eslint.config.ts
...
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'
export default defineConfigWithVueTs(
...
skipFormatting,
eslintPluginPrettierRecommended,
)
Créer un fichier test.js à la racine du dépôt avec le contenu suivant :
test.js
import test from "node:test";
import assert from "node:assert/strict";
import fs from "node:fs";
import { execSync } from "child_process";
test("présence des fichiers et dossiers", () => {
// Liste des chemins attendus dans le projet.
const expectedPaths = [
".git",
".github/workflows/deploy.yml",
".gitignore",
".prettierrc.json",
"eslint.config.ts",
"index.html",
"package.json",
"README.md",
"report.md",
"src/App.vue",
"src/main.ts",
"test.js",
"tsconfig.json",
"vite.config.ts",
];
// Vérifie que chaque chemin existe dans le projet.
expectedPaths.forEach((path) => {
assert.ok(
fs.existsSync(path),
`Le fichier ou dossier ${path} doit exister.`,
);
});
});
test("validation des fichiers", () => {
// Exécute la validation en utilisant https://eslint.org/
try {
const output = execSync("npx eslint").toString();
console.log(output);
} catch (error) {
assert.fail(error.output);
}
});
test("construction du site", () => {
try {
const output = execSync("npm run build").toString();
console.log(output);
} catch (error) {
assert.fail(error.output);
}
});
Ajouter le script test dans le fichier package.json pour pouvoir exécuter les tests avec la commande npm test :
package.json
{
...
"scripts": {
...
"test": "node --test"
}
}
Vérifier que les tests passent avec la commande npm test et corriger le code si cela n'est pas le cas.
Rapport
- Citer clairement les aides utilisées (Internet, personnes, IA, …).
- Indiquer toutes les requêtes SQL utilisées pour créer la base de données et insérer des données de test.
- Expliquer brièvement les étapes effectuées avec leurs principales difficultés rencontrées.
- Indiquer les fonctionnalités supplémentaires implémentées et expliquer brièvement comment elles ont été réalisées.
- Ajouter une auto-évaluation du projet en utilisant les critères d'évaluation.
- Compléter les estimations.
- Pousser tous les changements sur GitHub.
- Copier le lien du dépôt GitHub dans le devoir sur Moodle.
report.md
## Auto-évaluation
| Critère | Auto-évaluation (0, ½ ou 1) | Commentaire |
| ----------------------------------------------------------------------------- | --------------------------- | ----------- |
| Le rendu est correct avec un journal de bord complet. | | |
| Le journal de bord est bien structuré et synthétique. | | |
| Modélisation et mise en place correctes de la base de données. | | |
| L'application est configurée correctement et fonctionne sans erreur. | | |
| Bootstrap est utilisé pour améliorer l'apparence et le responsive. | | |
| Fonctionnalités supplémentaires avec de nouvelles tables. | | |
| Fonctionnalités supplémentaires avec des jointures entre les tables. | | |
| Autres améliorations. | | |
| Le code suit les conventions de codage (formatage, nommage, organisation, …). | | |
| Le code est lisible et maintenable (nommage, commentaires, …). | | |
Évaluation
L'évaluation du projet se portera sur les critères suivants :
- Rapport
- Le rendu est correct avec un journal de bord complet.
- Rendu sur GitHub Classroom dans les délais avec tous les fichiers requis.
- Le journal de bord est bien structuré et synthétique.
- Bonne utilisation de Markdown et le rapport montre une bonne maîtrise du projet.
- Le rendu est correct avec un journal de bord complet.
- Fonctionnalités
- Modélisation et mise en place correctes de la base de données.
- La modélisation, le SQL et le DSL permettent de faire fonctionner l'application.
- L'application est configurée correctement et fonctionne sans erreur.
- Il est possible de répondre au quiz pour obtenir un score et de gérer les questions dans la page d'administration.
- Bootstrap est utilisé pour améliorer l'apparence et le responsive.
- Bootstrap est mis en place et utilisation des composants ainsi que de la grille pour le responsive.
- Fonctionnalités supplémentaires avec de nouvelles tables.
- ½ point par nouvelle table avec la fonctionnalité correspondante.
- Fonctionnalités supplémentaires avec des jointures entre les tables.
- ½ point par jointure avec la fonctionnalité correspondante.
- Autres améliorations.
- ½ point par fonctionnalité supplémentaire.
- Modélisation et mise en place correctes de la base de données.
- Code
- Le code suit les conventions de codage (formatage, nommage, organisation, …).
- Passe tous les tests ESLint et Prettier configurés correctement et sans erreurs.
- Le code est lisible et maintenable (nommage, commentaires, …).
- Le code est facile à comprendre et à maintenir avec un bon nommage (fichiers, fonctions, variables, …), des commentaires utiles, …
- Le code suit les conventions de codage (formatage, nommage, organisation, …).
| Note | 1 | 1.5 | 2 | 2.5 | 3 | 3.5 | 4 | 4.5 | 5 | 5.5 | 6 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Nombre de critères validés | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
- En gras : critères principaux.
- En italique : critères secondaires.