Ma librairie

Application React (Vite) : livres enregistrés localement (équivalent métier POST /api/books), React Router, useContext, Axios (Open Library).

Ce quon a rajouté (branche Patrick_commande_promo, tout en français courant)

En gros : on a continué sans brancher aucun backend du cours. Les “POST” sont simulés dans le navigateur avec du React (Context) et du localStorage.

  • Commande (/commande) : tu choisis des livres avec une quantité, tu peux entrer un code promo si tu en as créé une, et tu passes la commande. Ça revient métier à un POST /api/orders, sauf que tout est enregistré localement sous la clé librairie-orders.
  • Promotions (/promotions) : tu crées des codes promo (pour linstant cest une remise en %), tu peux les activer / désactiver / supprimer. Cest le pendant local dun POST /api/promotions, stocké sous librairie-promotions.
  • Prix des livres : chaque livre a un champ prix (€) (formulaire, fiche détail, liste ; les anciens livres sans prix prennent 10 € par défaut). Les résultats ajoutés depuis Open Library partent aussi sur un prix par défaut.
  • Navigation : dans le menu en haut, liens Commande et Promotions en plus de Mes livres / Recherche.

Ce quon a rajouté (branche Patrick_reserve_retourne__avis_livre, tout en français courant)

Même logique que la branche dau-dessus : pas de backend du projet, on simule les endpoints avec du Context + localStorage, comme si on faisait des POST / GET mais que tout reste dans le navigateur.

  • Réserver un livre (POST /api/books/:id/reservations) : tu vas sur la fiche dun livre (/<id> dans lURL, ou en cliquant sur un titre), tu tapes sur Réserver. Une réservation active à la fois pour un même livre (sinon ça bloque, logique biblio pas folle sinon). Ça vit dans librairie-reservations.
  • Gérer le retour (POST /api/returns) : page dédiée Retours (/retours) — vue “biblio qui récupère les exemplaires”. Tu vois les réservations pas encore rendues, tu cliques Enregistrer le retour, et ça part dans lhistorique. Toujours le même stockage librairie-reservations que pour réserver : on ajoute juste une date de retour à lentrée.
  • Avis sur un livre (POST /api/books/:id/reviews) : toujours sur la fiche du livre, tu mets une note sur 5 + un petit pavé de texte, tu publies, et tes avis saffichent en dessous. Stocké sous librairie-reviews (un livre peut en avoir plusieurs, pas de problème).
  • Navigation : on a rajouté le lien Retours dans la barre du haut avec le reste.

Les données qui tournaient déjà (librairie-books pour le catalogue, puis librairie-orders et librairie-promotions si tu viens de lautre branche) : toujours zéro serveur, tout est chez toi dans le navigateur, pas sur linfra du cours.

Les membres du projet

Marvin Aubert, Maxime Lebreton et Patrick Felix-Vimalaratnam

Comment installer le projet

À la racine du dépôt :

npm install

Cette commande installe les dépendances listées dans package.json (React, Vite, React Router, Axios, etc.).

Comment lancer le projet

Mode développement (rechargement à chaud, URL affichée dans le terminal) :

npm run dev

Ouvre ensuite ladresse indiquée (souvent http://localhost:5173).

Prévisualiser le build de production (après npm run build) :

npm run preview

Comment tester le projet

Vérifications automatisées (lint) :

npm run lint

Build de production (vérifie que le projet compile) :

npm run build

Tests manuels dans le navigateur (après npm run dev) :

  1. Mes livres (/) : enregistrer un nouveau livre (libellés + POST /api/books côté UI), supprimer, filtrer (Tous / Lus / À lire), rechercher dans la liste.
  2. Fiche livre (/<id>) : lu / non lu, suppression, Réserver, publier un avis puis vérifier lhistorique sous le formulaire.
  3. Recherche (/recherche) : recherche Open Library (Internet), enregistrer un résultat (même logique que POST /api/books en local), puis vérifier quil apparaît sous Mes livres.
  4. Promotions (/promotions) : créer un code promo (ex. BUT10 avec 10 %), puis vérifier que tu peux le désactiver / le réactiver / le supprimer.
  5. Commande (/commande) : mettre au moins un livre avec une quantité strictement positive, tester sans promo puis avec le code créé avant ; passer la commande et vérifier le message + que le sous-total, la remise et le total sont cohérents (toujours en local).
  6. Retours (/retours) : après une réservation, vérifier que le livre apparaît puis Enregistrer le retour ; vérifier lhistorique et que tu peux de nouveau réserver le même titre.
S
Description
No description provided
Readme 17 MiB
Languages
JavaScript 71.1%
CSS 27.5%
HTML 1.4%