# Ma librairie Application React (Vite) : livres enregistrés localement (équivalent métier `POST /api/books`), React Router, `useContext`, Axios (Open Library). Il s'agit d'une application de gestion d'une librairie en ligne (pour un max de $$$). ## Ce qu’on 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 l’instant c’est une remise en %), tu peux les activer / désactiver / supprimer. C’est le pendant local d’un `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 vers **Commande** et **Promotions** à côté de Mes livres / Recherche. Les données déjà là (`librairie-books` pour le catalogue, etc.) ne changent pas de principe : tout reste dans ton navigateur, pas sur le serveur du projet BUT. ## 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 l’adresse 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** : cliquer sur le titre d’un livre ou aller sur `/` ; vérifier lu / non lu et suppression avec retour à **Mes livres**. 3. **Recherche** (`/recherche`) : recherche Open Library (Internet), enregistrer un résultat (même logique que `POST /api/books` en local), puis vérifier qu’il 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).