diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4c4822f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,50 @@
+# MyLibrary — backend Java
+
+Backend métier du projet librairie (Maxime Lebreton / Marvin Aubert / Patrick Felix-Vimalaratnam).
+Pendant visuel : dépôt **`2026-DEV-BUT3`** (React).
+
+## Stack
+
+- Java 21, Maven
+- Couche domaine : livres, clients, points de fidélité
+- **API REST** (branche `fusion`) : Spring Boot sur le port **8080**
+
+## Lancer l’API
+
+```bash
+mvn spring-boot:run
+```
+
+Vérifier : [http://localhost:8080/api/health](http://localhost:8080/api/health)
+
+## Endpoints exposés au front
+
+| Méthode | Route | Rôle |
+|---------|-------|------|
+| GET | `/api/health` | Ping |
+| GET | `/api/books` | Liste des livres (format UI) |
+| POST | `/api/books` | Créer un livre |
+| GET | `/api/books/{isbn}` | Détail |
+| DELETE | `/api/books/{isbn}` | Supprimer |
+| POST | `/api/books/{isbn}/read` | Basculer lu / non lu |
+| GET | `/api/users/{uuid}/loyalty-points` | Points fidélité client |
+
+Au démarrage, deux livres démo + un client Marie Dupont (100 pts) sont chargés si le catalogue est vide.
+
+## Brancher le front React
+
+Dans `2026-DEV-BUT3` (branche `fusion`) :
+
+```bash
+cp .env.example .env
+npm install
+npm run dev
+```
+
+Le proxy Vite envoie `/api` vers `localhost:8080`. Commandes, promos, réservations, avis, abo, prêts et groupes restent côté front (local) tant que ces use cases ne sont pas exposés ici.
+
+## Tests unitaires
+
+```bash
+mvn test
+```
diff --git a/pom.xml b/pom.xml
index 27ec78e..9358d49 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,7 @@
UTF-8
+ 3.4.1
1.18.36
@@ -48,6 +49,12 @@
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${spring.boot.version}
+
+
org.projectlombok
lombok
@@ -146,6 +153,18 @@
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring.boot.version}
+
+
+
+ repackage
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/MyLibraryApplication.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/MyLibraryApplication.java
new file mode 100644
index 0000000..832bd3a
--- /dev/null
+++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/MyLibraryApplication.java
@@ -0,0 +1,12 @@
+package fr.iut_fbleau.but3.dev62.mylibrary;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class MyLibraryApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(MyLibraryApplication.class, args);
+ }
+}
diff --git a/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/api/ApiExceptionHandler.java b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/api/ApiExceptionHandler.java
new file mode 100644
index 0000000..0cdaaec
--- /dev/null
+++ b/src/main/java/fr/iut_fbleau/but3/dev62/mylibrary/api/ApiExceptionHandler.java
@@ -0,0 +1,23 @@
+package fr.iut_fbleau.but3.dev62.mylibrary.api;
+
+import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.BookNotFoundException;
+import fr.iut_fbleau.but3.dev62.mylibrary.book.exception.NotValidBookException;
+import java.util.Map;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+@RestControllerAdvice
+public class ApiExceptionHandler {
+
+ @ExceptionHandler(BookNotFoundException.class)
+ public ResponseEntity