Ma librairie
Application React (Vite) : livres enregistrés localement (équivalent métier POST /api/books), React Router, useContext, Axios (Open Library).
Ce qu’on a rajouté (branche Patrick_commande_promo)
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 à unPOST /api/orders, sauf que tout est enregistré localement sous la clélibrairie-orders. - Promotions (
/promotions) : tu crées des codes promo (pour l’instant c’est une remise en %), tu peux les activer / désactiver / supprimer. C’est le pendant local d’unPOST /api/promotions, stocké souslibrairie-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 qu’on a rajouté (branche Patrick_reserve_retourne__avis_livre)
Même logique que la branche d’au-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 d’un livre (/<id>dans l’URL, 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 danslibrairie-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 l’historique. Toujours le même stockagelibrairie-reservationsque pour réserver : on ajoute juste une date de retour à l’entré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 s’affichent en dessous. Stocké souslibrairie-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 l’autre branche) : toujours zéro serveur, tout est chez toi dans le navigateur, pas sur l’infra du cours.
Ce qu’on a rajouté (branche Marvin_fidelite_abo_pret_commande_groupe)
Encore une fois : aucun backend du sujet, pas d’URL d’API cours, rien. On refait les 4 bouts manquants du PDF en Context + localStorage, comme un faux GET / POST qui ne sort jamais du navigateur.
- Points de fidélité (
GET /api/users/:id/loyalty-points, en local) : page Fidélité (/fidelite). Un pseudo-utilisateur fixelocal-user, solde + petit historique danslibrairie-loyalty. À chaque commande validée, on crédite des points (démo automatique depuis la page Commande). - Abonnement (
POST /api/subscriptions) : page Abo (/abonnement), formules mensuelle / annuelle factices, tout est danslibrairie-subscriptions(pas de vrai paiement). - Prêt entre lecteurs (
POST /api/books/:id/loans) : sur une fiche livre, bloc Prêter + page Prêts (/prets) pour clôturer avec Livre rendu.librairie-loans. Si le livre est déjà réservé côté biblio fictive, on bloque pour pas mélanger les délires. - Commande groupée (
POST /api/groups/:id/orders) : Groupes (/groupes) pour créer une coloc de commande, puis détail/groupes/:id-du-groupeoù chacune et chacun poste pseudo + montant € + petite note → tout est danslibrairie-groups-v1sur une seule clé locale (liste groupes + lignes participants). - Navigation : raccourcis Fidélité, Abo, Prêts, Groupes dans la barre du haut avec le reste.
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 l’adresse 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) :
- Mes livres (
/) : enregistrer un nouveau livre (libellés +POST /api/bookscôté UI), supprimer, filtrer (Tous / Lus / À lire), rechercher dans la liste. - Fiche livre (
/<id>) : lu / non lu, suppression, Réserver, publier un avis puis vérifier l’historique sous le formulaire. - Recherche (
/recherche) : recherche Open Library (Internet), enregistrer un résultat (même logique quePOST /api/booksen local), puis vérifier qu’il apparaît sous Mes livres. - Promotions (
/promotions) : créer un code promo (ex.BUT10avec −10 %), puis vérifier que tu peux le désactiver / le réactiver / le supprimer. - 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). - Retours (
/retours) : après une réservation, vérifier que le livre apparaît puis Enregistrer le retour ; vérifier l’historique et que tu peux de nouveau réserver le même titre. - Fidélité (
/fidelite) : noter le solde avant / après avoir passé une commande ; vérifier que des points ont été ajoutés (local). - Abo (
/abonnement) : souscrire à une formule puis résilier (local). - Prêt (
/<id>+/prets) : prêter un livre puis le marquer rendu sur la liste des prêts. - Groupes (
/groupespuis lien vers un groupe) : créer un groupe et ajouter plusieurs participations fictives avec montants différents, vérifier le total agrégé.