Aller au contenu principal

Séminaire

Objectifs​

  • Créer une application Web avec Vue.js et Supabase selon un cahier des charges.

Rendu​

Estimation​

  • Créer un ficher report.md dans 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âcheTemps estiméTemps passéCommentaire
Estimation10m15m...
............
Total2h1h30...

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.
  • 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.
  • 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, …
Note 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 
Nombre de critères validés012345678910
  • En gras : critères principaux.
  • En italique : critères secondaires.

Références​