On fond MongoDB, Spring Boot et Flutter en un parcours unique, cousu par un fil rouge concret : une application de commande groupée de fioul. Chaque techno construit une couche du même produit — versionné sur GitHub du premier commit au déploiement.
En zone rurale sans gaz de ville, on se chauffe au fioul. Commander ensemble, en gros volume, fait baisser le prix au litre. L'appli coordonne ces commandes groupées : un voisin ouvre une campagne pour sa commune, chacun s'inscrit avec sa quantité, et le volume total débloque un meilleur tarif chez le distributeur.
Un coordinateur ouvre une campagne pour une zone et une date limite. Des particuliers rejoignent avec une quantité de litres et une adresse de livraison. Quand le volume cumulé franchit un palier, le prix au litre baisse pour tout le monde. À la clôture, les commandes sont consolidées et livrées.
Le concept clé du parcours : une Campagne définie une fois se retrouve dans le document MongoDB, dans l'API Spring, puis à l'écran dans Flutter. Les étudiants voient la donnée circuler à travers toute la pile.
{
"_id": ObjectId("..."),
"zone": "Ladignac-le-Long",
"statut": "OUVERTE",
"dateLimite": ISODate(...),
"fournisseurId": ObjectId(...),
"commandes": [
{ "litres": 1500,
"commune": "Ladignac" }
]
}
// GET /api/campagnes/{id} record CampagneDTO( String id, String zone, Statut statut, Instant dateLimite, int volumeTotal, BigDecimal prixLitre ) {}
class Campagne { final String zone; final int volumeTotal; final double prixLitre; factory Campagne.fromJson( Map<String,dynamic> j) => ... }
Une donnée → trois représentations. C'est ce fil qui transforme trois cours séparés en un seul apprentissage.
Tes trois cours existants sont conservés intégralement. On ajoute le parcours « Forge & Git » en amont, et chaque parcours reçoit un jalon fil rouge sur le projet. Les parcours MongoDB, Spring et Flutter disposent d'un guide pas à pas (exemple à adapter au fioul).
.gitignore, READMEfioul-groupe, le board du projet, les premières issues, et publier CE site sur GitHub Pages.campagnes, commandes, fournisseurs ; agréger le volume ; requête géo./api/campagnes, /commandes, /auth avec rôles, tests et Swagger.compose.yaml qui monte les 3 couches (base, API, front) d'une seule commande, reproductible partout.participant, campagne, commande, fournisseur) ; agréger le volume par campagne ; comparer avec la version MongoDB.Campagne, Participant, Commande), calculer le volume avec un Stream, tester avec JUnit — le socle direct de l'API Spring.La séquence est volontairement ordonnée : on ne construit l'API qu'après avoir modélisé les données, ni l'appli mobile qu'après avoir une API. Chaque jalon ajoute une couche vérifiable au même dépôt GitHub.
On pose le problème (le fioul, les rôles, les user stories), on crée le dépôt, le board de projet et les premières issues. Le site du cours lui-même est déployé sur GitHub Pages.
Campagnes, commandes, fournisseurs en documents. Volume total par campagne (agrégation), regroupement par commune (géospatial). Base hébergée sur Atlas.
API REST en couches au-dessus de MongoDB, validation, rôles coordinateur / particulier en JWT, tests, Swagger, CI verte sur chaque PR.
Écrans liste et détail, jauge de volume, formulaire d'inscription, authentification JWT contre l'API Spring, carte des zones. L'appli consomme la vraie API.
Dépôt à l'historique propre, board bouclé, CI verte, API déployée + Swagger, APK Flutter, README complet. Soutenance et démonstration de bout en bout.
Un TD progressif, transversal : les étudiants n'apprennent pas Git « en théorie » puis l'oublient — ils l'utilisent réellement pour livrer le projet, séance après séance.
Compte GitHub, git init, .gitignore, README, premier push.
Une branche par fonctionnalité, PR, revue croisée, protection de main.
Board kanban, issues reliées aux user stories, labels, milestones.
.github/workflows : build Maven + tests, lint et build Flutter.
GitHub Pages, secrets pour Atlas, releases versionnées.
La toute première victoire du parcours : publier le portail du cours sur GitHub Pages. Les étudiants voient leur travail en ligne dès la séance 1 — un déclic motivant avant d'écrire une seule ligne de MongoDB.
# dans le dépôt fioul-groupe git add site/ git commit -m "docs: portail du parcours" git push # → Settings ▸ Pages ▸ branche main /site # → https://<classe>.github.io/fioul-groupe/
Des critères concrets, alignés sur le référentiel du BTS SIO SLAM et sur des pratiques professionnelles réelles.
chapitre-XX.html une fois les trois sites rassemblés dans le même dépôt.