Ce projet a pour objectif de vous permettre de construire vous-même les routes du backend en utilisant Node.js, Express et TypeScript. Vous travaillerez avec des fichiers JSON contenant des questions thématiques, que vous allez manipuler pour créer des endpoints API dynamiques.
Avant de commencer, assurez-vous d'avoir les éléments suivants installés sur votre machine :
- Node.js : Vous pouvez le télécharger depuis le site officiel.
- pnpm : Un gestionnaire de paquets rapide et efficace.
Pour installer pnpm, exécutez la commande suivante dans votre terminal :
npm install -g pnpm
Une fois que vous avez cloné le dépôt, accédez au répertoire du projet et installez les dépendances en exécutant :
pnpm i
Dans un terminal, lancez la commande suivante pour compiler le code TypeScript en mode auto-watch :
pnpm build:dev
Dans un autre terminal, démarrez le serveur en mode développement avec :
pnpm start:dev
L'objectif de ce projet est de manipuler des fichiers JSON pour construire dynamiquement des endpoints API. Voici les étapes que vous devez suivre :
-
Charger et concaténer les fichiers JSON :
Les fichiers JSON se trouvent dans le dossiersrc/data
. Chaque fichier JSON contient une série de questions structurées de la manière suivante :{ "theme": "Introduction à la Programmation Fonctionnelle", "question": "Quel est un exemple de langage impératif ?", "options": ["A) Haskell", "B) JavaScript", "C) Scala", "D) Elm"], "correct": "B" }
Votre première tâche consiste à ouvrir tous les fichiers JSON et à les concaténer en un seul tableau.
-
Manipulation des options de réponse :
Après avoir concaténé les données, vous devez mélanger aléatoirement les options de réponse pour chaque question, puis mettre à jour la clécorrect
en fonction de ce nouveau mélange. -
Regroupement par thème :
Ensuite, vous devez regrouper les questions par thème. Chaque thème représentera un endpoint de l'API. -
Construction des endpoints API :
Pour chaque thème, vous allez créer un endpoint API qui renverra du HTML ou du TSX. Ce contenu affichera toutes les questions du thème ainsi que les réponses proposées. Chaque question aura un bouton "see answer" qui, une fois cliqué, affichera la réponse correcte.