Notre société est une coopérative céréalière.
Pour être performant, nous avons besoin d'informatiser nos processus.
Après un travail acharné avec la team Product Owner. Nous avons pu construire la story map suivante:
En découle des User stories que nous avons priorisées au courant des 2 sprints précédents.
Ainsi, aujourd'hui vous arrivez au sein de l'équipe de développement avec comme objectif d'attaquer l'activité "Import des matières premières" et principalement les US 5 et 6.
Le backlog est prêt et n'attend que vous.
En tant que fermier membre de la coopérative,
Je veux pouvoir planifier un dépôt de céréale à l'avance
Pour avoir la confirmation que j'ai le droit de livrer à la date et heure convenu.
- Le fermier doit être un membre de la coopérative, sans ça il ne peut pas utiliser l'api.
- Le fermier doit choisir une date dans le futur avec au moins 7 jours d'avance.
- Le fermier doit choisir parmi une liste de 4 céréales :
- Blé
- Avoine
- Orge
- Houblon
En tant que fermier membre de la coop
Je veux pouvoir spécifier le poids de ma cargaison au moment où je la planifie,
Afin que la coop puisse prendre une décision et confirmer que ma livraison est possible.
Au moment où le fermier précise son choix de céréales à livrer, il doit désormais préciser une quantité.
- Cette quantité doit être un nombre en tonnes, un entier positif à 2 décimales.
- Cette quantité ne peut être inférieure à 1,5t et supérieur à 8t
En tant que membre de l'équipe de développement, vous aurez sûrement besoin d'avoir les informations sur la stack technique et l'architecture du projet.
L'architecture applicative se résume pour l'heure à un ensemble d'API.
La facturation a été isolée sur un microservice dédié et ne fera donc pas l'objet de votre périmètre technique.
Les périmètres fonctionnels "Gestion des fermiers" et "Import des matières premières" sont rassemblés au sein du même dépôt de code qui permet de déployer un microservice exposant des API REST.
L'architecture technique choisie pour ce microservice est l'architecture hexagonale :
Concernant la stack technique, voici la liste des langages et frameworks utilisés :
- Java 21
- Springboot 3.3.1
Il a aussi été choisi de faire du "Contrat First" pour la gestion des contrats d'API. Le dossier api-contracts contient les contrats au format OpenAPI.
Si vous le souhaitez, vous pouvez lancer l'application en local mais elle nécessite une base de données PostgreSQL.
Mais heureusement, nous avons un docker-compose.yml disponible avec la bonne configuration :
docker compose up -d
Il suffit alors de lancer via Maven l'application spring-boot :
./mvnw spring-boot:run