Intervenants
- Hélène Coullon (RUE)
- Lucien Astié
Vue d’ensemble
- 25/09/2026
- Introduction
- Cours et tutoriel REST et OpenAPI
- début du TP noté
- 02/10/2026
- Evaluation partie REST/OpenAPI
- Cours et tutoriel GraphQL
- Suite TP noté
- 13/11/2026
- Evaluation partie GraphQL
- Cours et tutoriel gRPC
- Introductions à MongoDB et Docker
- Suite TP noté
- 20/11/2026
- Evaluation partie gRPC
- Suite et fin TP noté (intégrer MongoDB et Docker)
- 27/11/2026
- présentation du sujet de projet et début des projets
- évaluation orale TP noté
- rendu Moodle
- 04/12/2026, 08/01/2027, 15/01/2027, 22/01/2027 Projet (encadré par Lucien Astié)
- 29/01/2027 évaluation orale du projet et rendu Moodle
REST
- Slides d’introduction
- Pdf du cours sur REST
- Tutoriel sur Flask
- Tutoriel sur OpenAPI
- Sujet de TP REST
GraphQL
- Pdf du cours sur GraphQL
- Tutoriel sur GraphQL
- Si besoin terminer TP REST
- sujet de TP mixte
gRPC
Docker et NoSQL
- Cours Docker
- Tutoriel sur la CLI Docker
- Introduction aux bases NoSQL
- Tutoriel MongoDB
- TP noté
- dockeriser l’application REST et MIXTE
- passer les fichiers Json dans une unique base MongoDB (pour simplifier) conteneurisée et adapter les services
- faites en sorte que je puisse choisir simplement (et pas de
.bat) si j’utilise Docker ou pas (différence dans les appels entre services) et si j’utilise Mongo ou pas
Projet
Le projet vise à développer un backend (uniquement !) sur le thème des déplacements multimodaux : faire un trajet avec plusieurs moyens de transports comme par exemple vélo+bus+tram, bateau+train, avion+train, etc. À vous de choisir le spectre de votre application : Nantes, Bretagne, France, ou dans le monde. A vous aussi de concevoir une application qui sort de l’ordinaire : critères importants dans le calcul, etc.
Pour cela il sera nécessaire d’interroger plusieurs APIs externes et de croiser les données: trains, bus, naolib, vélo perso, voiture et co-voiturage, moto, trottinnette, bâteaux etc. Il ne s’agit pas forcément de calculer l’itinéraire le plus direct, il faut penser aux connections, au trafic, aux conditions de sécurité etc. Vous pouvez même imaginer d’autres critères plus qualitatifs que quantitatifs sur les trajets à considérer. Laissez parler votre imagination pour une application originale (ou même farfelue) !
Votre application offrira elle même plusieurs micro-services (calculs diverses, comptes utilisateurs/préférences, bdd, gateway, etc.) avec leurs APIs correspondantes. Les APIs de votre application seront utilisées pour que les micro-services se parlent entre eux, et pour qu’un frontend ou utilisateur y fasse des requêtes. Pensez bien vos API et votre architecture !
- Organisation : constituer des groupes de 4 élèves
- Contraintes
- coder au moins 3 micro-services dans votre application avec au moins une API REST et une API GraphQL (gRPC non obligatoire)
- coder au moins un micro-service dans un autre langage que Python (Go, Js, Ts, Java etc.)
- utiliser des APIs externes pour obtenir des données pour votre application
- votre application doit être dockerisée
- fournir l’export Insomnia permettant de tester votre application
- utiliser une BD NoSQL pour gérer les données des micros-services (cache, données calculées)
- bonus :
- utiliser un broker de messages (MQTT, RabbitMQ, Kafka ou autre) dans votre application pour gérer des événements ou messages asynchrones ou un cache de données des APIs externes
- coder une API gRPC (voir cours/tutoriel proposé plus bas)
Evaluations
- Evaluation orale TP noté - 15 minutes par groupe
- contexte de la présentation : le groupe et moi seulement
- préparer une démonstration de votre application MIXTE dockerisée et utilisant MongoDB
- dérouler les tests insomnia avec un scénario logique d’utilisation de l’application
- questions/réponses
- Evaluation orale projet - 20 minutes par groupe
- contexte de la présentation : devant toute la classe
- présenter avec des slides votre projet et l’architecture de votre application avec les différentes API et langages utilisés
- présenter votre application à travers une démonstration