🛢️ Parcours Fioul GroupéBTS SIO · SLAM — un projet, quatre technos
Atelier SLAM de 2e année

Trois cours, un seul projet qui les relie de bout en bout.

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.

8parcours reliés
126chapitres
1dépôt de code
1produit livré
Le fil rouge

« Fioul Groupé » — se chauffer moins cher, à plusieurs

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.

Le domaine en une phrase

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.

  • Coordinateur ouvre et pilote une campagne, suit le volume, clôture et déclenche la commande auprès du fournisseur.
  • Particulier parcourt les campagnes ouvertes de sa zone, s'inscrit, suit en direct le palier de prix atteint.
  • Fournisseur définit ses paliers dégressifs (volume → prix/L) et les zones qu'il dessert.

Pourquoi ce sujet

  • Concret et local — les étudiants connaissent la réalité (Limousin, campagne).
  • Riche techniquement — agrégations, géo, rôles, mobile.
  • Un seul domaine — pas de nouveau contexte à chaque techno.
  • Motivant — une vraie appli utilisable au bout.
  • Évaluable — critères clairs à chaque jalon.

La colonne vertébrale

La même entité, portée d'une techno à l'autre

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.

MongoDB Document stocké
{
  "_id": ObjectId("..."),
  "zone": "Ladignac-le-Long",
  "statut": "OUVERTE",
  "dateLimite": ISODate(...),
  "fournisseurId": ObjectId(...),
  "commandes": [
    { "litres": 1500,
      "commune": "Ladignac" }
  ]
}
Modélisation NoSQL · agrégation du volume · palier de prix.
Spring Boot Exposée en API
// GET /api/campagnes/{id}
record CampagneDTO(
  String id,
  String zone,
  Statut statut,
  Instant dateLimite,
  int volumeTotal,
  BigDecimal prixLitre
) {}
Couches controller / service / repository · validation · JWT.
Flutter Affichée à l'écran
class Campagne {
  final String zone;
  final int volumeTotal;
  final double prixLitre;

  factory Campagne.fromJson(
    Map<String,dynamic> j) => ...
}
Écran liste + détail · jauge de volume · s'inscrire.

Une donnée → trois représentations. C'est ce fil qui transforme trois cours séparés en un seul apprentissage.


Le contenu

Quatre parcours, dans l'ordre du projet

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).

0 Nouveau · prérequis

Forge & Git avec GitHub

8 chapitres · mettre en place le projet
▸
  1. Pourquoi une forge ? — Git vs GitHub, compte, clé SSH / token
  2. Premier dépôt — init, add, commit, .gitignore, README
  3. Travailler à plusieurs — branches, merge, conflits
  4. Le flux GitHub — issues, Pull Requests, revue, protection de branche
  5. Organiser le travail — GitHub Projects, milestones, labels
  6. Intégration continue — GitHub Actions : build Maven + tests, build Flutter
  7. Déploiement — GitHub Pages, secrets, releases
  8. Bonnes pratiques & sécurité — commits conventionnels, zéro secret, Dependabot
🛢️ Jalon fil rouge — créer le dépôt fioul-groupe, le board du projet, les premières issues, et publier CE site sur GitHub Pages.
Ouvrir les 8 séances pas à pas →
1 Existant · 17 ch. · guide pas à pas

MongoDB — NoSQL orienté documents

Modéliser progressivement les données du domaine
▸
  1. Introduction à MongoDB — SQL/NoSQL, documents, BSON
  2. Shell mongo, Compass & VSCode — mongosh, import/export
  3. Méthodes CRUD — insert, find, update, delete
  4. Opérateurs de recherche — comparaison, logiques
  5. Opérateurs de tableaux — $all, $elemMatch, $push, $pull
  6. Opérateurs de mise à jour — $currentDate, $min/$max
  7. Les projections — inclusion/exclusion, $slice
  8. Modéliser une base — One-to-One, One-to-Many, Many-to-Many
  9. Curseur & exercices — sort, limit, skip, count
  10. Validation des schémas — $jsonSchema
  11. Les index — explain, composés, TTL, unique
  12. Recherches textuelles — $text, score
  13. Recherches géospatiales — 2dsphere, $near, $geoWithin
  14. Les agrégations — $group, $lookup, $unwind, $bucket
  15. Exemples d'agrégations — cas concrets
  16. Types de nombre — int32, int64, decimal128
  17. Présentation d'Atlas — DBaaS, cluster
🛢️ Jalon fil rouge — modéliser campagnes, commandes, fournisseurs ; agréger le volume ; requête géo.
Cours de base (FR) → Les 17 chapitres → Guide pas à pas →
2 Existant · 19 ch. · guide pas à pas

Spring Boot — l'API du projet

Entity → repository → service → DTO → controller → Swagger
▸
  1. Introduction — écosystème, architecture
  2. Mise en place d'une appli Spring Boot — contrôleur, service, repository
  3. Structure & configuration — starters, properties
  4. Projet fil rouge — mise en place — API, tests, Swagger
  5. Partie Web — MVC, contrôleurs, validation
  6. Projet — couche Web — design API
  7. Partie Services — clean code, SOLID, IoC
  8. Projet — couche Services — logique métier
  9. Partie Data — Spring Data, entités, repositories
  10. Projet — couche Data — persistance
  11. Projet — tests automatisés — MockMvc, E2E
  12. Partie Sécurité — Spring Security, JWT
  13. Projet — sécurisation — rôles, durcissement
  14. Partie Déploiement — Maven, Docker
  15. Projet — packaging & déploiement — profils, cloud
  16. Partie Monitoring — logs, Actuator
  17. Projet — surveillance — Graylog
  18. Projet — nouvelles fonctionnalités — extensions
  19. Projet — authentification avancée — OAuth2, Keycloak
🛢️ Jalon fil rouge — API REST /api/campagnes, /commandes, /auth avec rôles, tests et Swagger.
Cours de base (FR) → Les 19 chapitres → Guide pas à pas →
3 Existant · 19 ch. · guide pas à pas

Flutter — l'appli mobile

Modèle → service → liste → détail → état → formulaire → auth
▸
  1. Introduction à Flutter — Dart, hot reload
  2. Les bases de Dart — variables, classes, async
  3. Introduction aux widgets — Text, Image
  4. Widgets de layout — Container, Column, Row, Stack
  5. Introduction à Material — Scaffold, AppBar
  6. Stateless / Stateful, Card, InkWell — état, callback
  7. Widgets de listes — ListView, ListTile, GridView
  8. Date, BottomNav & cycle de vie — DateTime, Intl
  9. Fonctionnement approfondi — keys, thème, MediaQuery
  10. La navigation — Navigator, routes nommées
  11. Dialog, SnackBar, Drawer & Tabs — retours utilisateur
  12. Provider & gestion d'état — ChangeNotifier, Consumer
  13. Protocole HTTP — http, JSON, FutureBuilder
  14. Les formulaires — Form, TextFormField, validation
  15. Animations — AnimationController, Hero
  16. Interaction avec le hardware — image_picker, GPS
  17. Google Maps — GoogleMap, marqueurs
  18. Publication sur le Store — build Android
  19. Authentification JWT — token, refresh
🛢️ Jalon fil rouge — appli mobile : liste, détail avec jauge, inscription, connexion JWT, carte.
Cours de base (FR) → Les 19 chapitres → Guide pas à pas →
🐳 Infrastructure · 8 chapitres

Docker & conteneurs

Orchestrer les 3 couches avec docker-compose
▸
  1. Introduction à Docker — conteneur vs VM, image, registre
  2. Images & conteneurs — run, ps, logs, exec, ports
  3. Écrire un Dockerfile — build multi-stage de l'API
  4. Volumes & persistance — données MongoDB
  5. Les réseaux — communication par nom de service
  6. Docker Compose — tout décrire en un fichier
  7. Le projet en Compose — database + api + web
  8. Bonnes pratiques & déploiement — secrets, images légères, registre
🛢️ Jalon fil rouge — un compose.yaml qui monte les 3 couches (base, API, front) d'une seule commande, reproductible partout.
Les 8 chapitres →
🐬 Bases de données · 16 chapitres

MySQL — le SQL relationnel

Le même domaine en relationnel : l'alternative SQL à MongoDB
▸
  1. Introduction à MySQL — SGBDR, relationnel, installation, Workbench
  2. Récupérer des données — SELECT, WHERE, opérateurs, ORDER BY, LIMIT
  3. Les jointures — INNER, LEFT/RIGHT, CROSS, self join
  4. Créer, modifier, supprimer — INSERT, UPDATE, DELETE, DDL
  5. Les agrégations — COUNT, SUM, GROUP BY, HAVING, ROLLUP
  6. Exercices pratiques — série corrigée sur le schéma fioul
  7. Opérateurs & fonctions — sous-requêtes, EXISTS, UNION, fonctions
  8. Les vues — tables virtuelles, CHECK OPTION
  9. Procédures & fonctions stockées — variables, CALL, contrôle
  10. Déclencheurs & événements — triggers, scheduler
  11. Transactions & concurrence — ACID, COMMIT, isolation
  12. Les types de données — numériques, chaînes, dates, JSON
  13. Modélisation — Merise, MCD/MLD, normalisation 🔑
  14. Gestion des tables — ALTER, contraintes, FK, moteurs
  15. Index & performances — index, EXPLAIN, optimisation
  16. Utilisateurs & sécurité — GRANT, injection SQL, sauvegardes 🛡️
🛢️ Jalon fil rouge — modéliser le domaine en relationnel (participant, campagne, commande, fournisseur) ; agréger le volume par campagne ; comparer avec la version MongoDB.
Les 16 chapitres →
☕ Langage · 22 chapitres

Java — le langage de l'API

Du premier programme à la POO, socle direct de Spring Boot
▸
  1. Introduction — JVM/JDK, installation, premier programme
  2. Les bases de Java — variables, types, opérateurs, saisie
  3. Les structures de contrôle — if/switch, boucles
  4. Les fonctions — méthodes, surcharge, récursivité
  5. Programmation orientée objet — classes, héritage, interfaces 🔑
  6. Tableaux et collections — List, Map, Set, génériques
  7. Les packages — organisation, visibilité, import
  8. Mini projet : le pendu — projet console
  9. La gestion d'erreurs — exceptions, try/catch
  10. Mini projet : le morpion — tableaux 2D, logique
  11. Les dates — java.time, LocalDate, durées
  12. Les classes mathématiques — Math, BigDecimal (argent)
  13. La programmation fonctionnelle — lambdas, Streams
  14. Les génériques — types paramétrés, wildcards
  15. Les expressions régulières — Pattern, Matcher, validation
  16. Gradle — build, dépendances, packaging
  17. Tests et JUnit — tests unitaires, assertions
  18. Manipulation des fichiers — java.nio, Files, CSV
  19. Properties et i18n — configuration, ResourceBundle
  20. Le logging — SLF4J, niveaux
  21. Réseau et sérialisation — HttpClient, JSON, Jackson
  22. La programmation parallèle — threads, concurrence
🛢️ Jalon fil rouge — modéliser le domaine fioul en classes Java (Campagne, Participant, Commande), calculer le volume avec un Stream, tester avec JUnit — le socle direct de l'API Spring.
Les 22 chapitres →
✦ Culture IA · 17 modules

Claude Fondations

Utiliser Claude et Cowork efficacement et en sécurité
▸
  1. Introduction à Anthropic et Claude — produits, façons d'utiliser
  2. Comprendre l'IA générative — LLM, entraînement, contexte, tokens
  3. Fonctionnalités, limites, bonnes pratiques — modèles, outil, agent
  4. Prendre en main Claude.ai — interface, prompts, instructions
  5. Les modes de rendu — texte enrichi, visuels, dynamiques
  6. Les outils — recherche web, approfondie, fichiers
  7. Les projets — base de connaissances, RAG, collaboration
  8. Les artefacts — documents, visuels, code, tableaux de bord
  9. Les compétences (Skills) — savoir-faire réutilisables
  10. Introduction aux connecteurs — accès, permissions, MCP
  11. Les connecteurs Google — Gmail, Agenda, Drive, Chrome
  12. Le connecteur Microsoft 365 — Word, Excel, PowerPoint, Outlook
  13. Le connecteur Slack — connecteur et extension
  14. Présentation de Cowork — l'agent autonome
  15. Fonctionnalités de Cowork — tâches récurrentes, arrière-plan
  16. Les plugins avec Cowork — compétences + outils + connecteurs
  17. Sécurité et informations — risques, règles, Cowork 🛡️
🎓 Culture professionnelle — un parcours transversal sur l'usage de l'IA (Claude, Cowork) et sa sécurisation, utile à tous les étudiants SIO. Chaque module renvoie à son support de cours et sa fiche de révision (PDF).
Les 17 modules →

La progression

De l'idée au produit livré, jalon par jalon

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.

0
Semaines 1–2 · avant les technos

Cadrage & forge

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.

Forge & Git
1
Bloc données

Modéliser le domaine

Campagnes, commandes, fournisseurs en documents. Volume total par campagne (agrégation), regroupement par commune (géospatial). Base hébergée sur Atlas.

MongoDBissues / PR
2
Bloc back-end

Exposer & sécuriser l'API

API REST en couches au-dessus de MongoDB, validation, rôles coordinateur / particulier en JWT, tests, Swagger, CI verte sur chaque PR.

Spring BootGitHub Actions
3
Bloc mobile

L'appli des particuliers

É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.

FlutterAPI
✓
Livraison

Le produit & sa soutenance

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.

Tout le parcours

Le nouveau parcours

Mise en place du projet via une forge (GitHub)

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.

1

Le dépôt & le premier commit

Compte GitHub, git init, .gitignore, README, premier push.

2

Branches & Pull Requests

Une branche par fonctionnalité, PR, revue croisée, protection de main.

3

Piloter avec GitHub Projects

Board kanban, issues reliées aux user stories, labels, milestones.

4

Intégration continue

.github/workflows : build Maven + tests, lint et build Flutter.

5

Déploiement & secrets

GitHub Pages, secrets pour Atlas, releases versionnées.

Idée d'accroche

La première mise en ligne, c'est ce site lui-même

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/

Cadre pédagogique

Livrables & évaluation

Des critères concrets, alignés sur le référentiel du BTS SIO SLAM et sur des pratiques professionnelles réelles.

📦

Livrables attendus

  • Dépôt GitHub à l'historique propre
  • Board de projet bouclé
  • Base MongoDB (Atlas) + jeux de données
  • API Spring déployée + Swagger
  • APK Flutter fonctionnel
  • README + dossier de synthèse
📊

Critères d'évaluation

  • Modélisation & pertinence des agrégations
  • Qualité de l'API (couches, validation, tests)
  • UX & robustesse de l'appli mobile
  • Hygiène Git (commits, PR, revues)
  • CI verte & déploiement effectif
  • Soutenance & démonstration
🛡️

Passerelle Cybersécurité

  • Modèle de menaces du projet
  • Authentification JWT & rôles
  • Validation des entrées côté API
  • Zéro secret dans le dépôt (Dependabot)
  • HTTPS & durcissement au déploiement
  • Revue de code orientée sécurité
À propos de ce portail — site statique autonome (HTML/CSS/JS pur), dans l'esprit visuel de tes trois sites existants. Les parcours MongoDB, Spring et Flutter pointent vers des guides pas à pas ; chaque parcours pourra aussi pointer vers tes pages chapitre-XX.html une fois les trois sites rassemblés dans le même dépôt.