Files

77 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

2026-03-22 18:45:37 +01:00
# Ma librairie
Application React (Vite) : livres enregistrés localement (équivalent métier `POST /api/books`), React Router, `useContext`, Axios (Open Library).
2026-05-03 11:27:56 +02:00
## 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.
2026-05-03 11:43:25 +02:00
- **Navigation** : dans le menu en haut, liens **Commande** et **Promotions** en plus de Mes livres / Recherche.
2026-05-03 11:27:56 +02:00
2026-05-03 11:43:25 +02:00
## 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.
2026-05-03 11:27:56 +02:00
2026-03-22 18:45:37 +01:00
## 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.
2026-05-03 11:43:25 +02:00
2. **Fiche livre** (`/<id>`) : lu / non lu, suppression, **Réserver**, publier un **avis** puis vérifier lhistorique sous le formulaire.
2026-03-22 18:45:37 +01:00
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**.
2026-05-03 11:27:56 +02:00
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).
2026-05-03 11:43:25 +02:00
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.