Binôme : Youssef EL KADI & Mathéo GALUBA
2. Architecture technique
Stack technologique
- Framework : Spring Boot
- Base de données : SQLite3
- ORM : Spring Data JPA + Hibernate
- Templating : Thymeleaf
- CSS : pico css
- Tests : JUnit + Mockito
Organisation du projet
Chaque ressource est autonome avec 4 composants principaux :
- Modèle JPA (@Entity)
- Repository (Spring Data JPA)
- Service (logique métier)
- Contrôleur
3. Modèle de données
4. Ressources
Users
POST /users- Création d’utilisateur{ "name": "string (1-100)", "email": "email@valid.com", "password": "string (min 8)", "notification": "boolean" }GET /users/{uuid}- Profil public d’un utilisateurGET /users/me- Profil privé de l’utilisateur connecté authentifiéPOST /users/me/likes- Ajouter un like à un item authentifié{ "item": "uuid" }DELETE /users/me/likes- Retirer un like authentifié{ "item": "uuid" }
Items
GET /items- Liste des items- Paramètres :
page,limit,q,keyword
- Paramètres :
POST /items- Création d’un item authentifié{ "title": "string", "description": "string", "keywords": ["array", "of", "strings"], "donateAt": "date", "latitude": "number", "longitude": "number" }GET /items/{uuid}- Détails d’un itemPUT /items/{uuid}- Mise à jour d’un item propriétaire uniquement{ "title": "string", "description": "string", "state": "enum", "donateAt": "date" }DELETE /items/{uuid}- Suppression d’un item propriétaire uniquement
Messages authentifié
POST /items/{itemUuid}/messages- Envoyer un message{ "receiverUuid": "uuid", "content": "string (1-1000)" }GET /items/{itemUuid}/messages- Lire une conversation participant uniquementGET /items/{itemUuid}/messages- Liste les conversations propriétaire uniquement- Paramètre :
user(permet d’afficher les messages de la conversation avec ce participant)
- Paramètre :
Searches authentifié
POST /users/me/searches- Sauvegarder une recherche{ "query": "string" }GET /users/me/searches/{uuid}- Redirige vers le resultat de cette rechercheDELETE /users/me/searches/{uuid}- Supprimer une recherche
Keywords
GET /keywords- Liste des mots-clés- Paramètres optionnels:
q,page,size
- Paramètres optionnels:
GET /keywords/{uuid}- Détails d’un mot-clé
Les mots-clés sont créés lors de l’ajout d’un item s’ils n’existent pas déjà.
Carts authentifié
GET /user/me/carts- Liste tous les lotsGET /user/me/carts/{uuid}- Détails d’un lotPOST /users/me/carts/items/{item_uuid}- Ajoute un item à un lot (créé le lot s’il n’existe pas)DELETE /users/me/carts/items/{item_uuid}- Supprime un item d’un lotPATCH /user/me/carts/{uuid}- Modifie le status d’un lot- DRAFT → SENT (accessible par le créateur du lot)
- SENT → ACCEPTED (Accessible par le propriétaire des objets du lot)
- SENT → REFUSED (Accessible par le propriétaire des objets du lot)
5. Exécution
Compiler le projet
./gradlew buildLancer l’application
./gradlew bootRunExécuter les tests
./gradlew test