Mon Vieux Grimoire: projet OpenClassRooms back-end

Mon Vieux Grimoire est un projet de développement backend dans le cadre de ma formation OpenClassRooms. Je vais vous présenter ici:

  • Les technologies utilisées
  • Les fonctionnalités
  • Les éléments de style un peu complexes
  • Les difficultés rencontrées

Je vais devoir utiliser le langage technique. Je vous propose donc, avant cela, un résumé compréhensible par un non-développeur.

Vous pouvez consulter le code à l'adresse suivante : https://github.com/AlexandreBaumann/p7

Résumé

Présentation des technologies utilisées

Node.js - Express

Le serveur utilise la librairie Node.js (javascript) "Express". Elle permet notamment de gérer le routage, les middleware et les contrôleurs.

Dépendances

Parmi les dépendances utilisées, il y a notamment:

  • Bcrypt pour le hashage du mot de passe.
  • Prettier pour le formattage automatique.
  • jsonwebtoken pour gérer le maintien de l'authentification.
  • Cors pour permettre la communication entre serveurs différents.
  • Dotenv pour les variables d'environnement.
  • Mongoose pour interagir avec la base de données.
  • Multer et sharp pour stocker et retravailler les images envoyées.

J'utilise également Typescript pour avoir un code plus propre.

MongoDB

MongoDB est une base de données NoSQL très facile à appréhender.

Autres

J'utilise le SCSS pour le style.

Fonctionnalités

Le projet est un backend: l'idée est de gérer les requêtes provenant de l'interface (front end) et de leur donner les réponses souhaitées. Il y en avait 9:

  • Afficher les items (livres) de la base de donnée.
  • Trier et afficher les items les mieux notés
  • Afficher un item
  • Ajouter sa note à un item
  • Ajouter un item
  • Modifier un de ses items
  • Supprimer un de ses items
  • S'inscrire
  • Se connecter

Pour chacune de ces routes, il fallait définir le parcours de la requête: sa nature (get, post) et son endpoint (ex: /api/books/:id/rating), les middleware, puis les contrôleurs. Par exemple, plusieurs de ces routes nécessitaient d'être authentifié. Il y avait un middleware "auth.js" pour gérer cela et stopper la requête si le token de connexion n'était pas présent.

Si les middleware étaient passés avec succès, ce sont les contrôleurs qui sont activés et enregistrer, par exemple, la modification de la note en base de donnée.

Le style

Difficultés rencontrées

Le projet était relativement simple. La difficulté résidait surtout dans le fait que c'était notre premier contact avec ce système. Seul le paramétrage de la gestion des images, avec multer et sharp, était un peu complexe.