Files
2026-DEV-BUT3/README.md
T
2026-05-10 12:44:52 +02:00

91 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
## Ce quon a rajouté (branche Marvin_fidelite_abo_pret_commande_groupe, tout en français courant)
Encore une fois : **aucun backend du sujet**, pas dURL dAPI 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 fixe `local-user`, solde + petit historique dans **`librairie-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 dans **`librairie-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-groupe`** où chacune et chacun poste pseudo + montant € + petite note → tout est dans **`librairie-groups-v1`** sur 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 :
```bash
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) :
```bash
npm run dev
```
Ouvre ensuite ladresse indiquée (souvent `http://localhost:5173`).
**Prévisualiser le build de production** (après `npm run build`) :
```bash
npm run preview
```
## Comment tester le projet
**Vérifications automatisées (lint)** :
```bash
npm run lint
```
**Build de production** (vérifie que le projet compile) :
```bash
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.
7. **Fidélité** (`/fidelite`) : noter le solde avant / après avoir passé une **commande** ; vérifier que des points ont été ajoutés (local).
8. **Abo** (`/abonnement`) : souscrire à une formule puis résilier (local).
9. **Prêt** (`/<id>` + `/prets`) : prêter un livre puis le marquer **rendu** sur la liste des prêts.
10. **Groupes** (`/groupes` puis lien vers un groupe) : créer un groupe et ajouter plusieurs participations fictives avec montants différents, vérifier le total agrégé.