Cartouche

Champ Valeur
Module Programmation Générale en Rust 202
Auteur·e·s Élise Philippe
Édition 2025-04-10
Chronologie 5 séances du 2025-04-11 au 2025-06-12 avant implémentation frontend avec Gilles

2 jours entier le 2025-06-26 et 27

soutenance finale le 2025-06-27
Taille des équipes 3~5 personnes
Rendu via git, dépôt $YEAR_rust_api, droits en lecture à delivery_collector
Nom du crate en fonction de vos charges

Règlement

Prenez connaissance du règlement ici

L’intégralité de la bibliothèque standard est autorisée. Vous êtes encouragés à vous servir des outils qu’elle vous propose s’ils résolvent un de vos problèmes. Votre objectif c’est d’éviter de ré-inventer la roue quand ça n’est pas nécessaire.

Certains crates sont proposés dans le sujet. Vous avez le droit de vous servir de toutes leurs fonctionnalités.

Vous pouvez rechercher des alternatives à ces crates, voir des crates qui vous proposent des fonctionnalités complètement différentes. Si ces crates affectent l’écriture de votre algorithme ou l’architecture de votre programme, vous devez les faire valider en amont.

Barème

  • 5 : Choix de l’idée : vous-vous êtes appropriés un sujet et l’avez étayé de sortes à ce qu’on comprenne bien la problématiques que vous attaquez et comment vous comptez le faire
  • 5 : Conception
    • entités : on comprend les entités, ce qu’elles modélisent, leurs relations sont cohérentes
    • routes et dto : les routes choisies et les données avec lesquelles elles travaillent permettent clairement de faire les tâches décrites dans les charges, le rôle de chaque route est identifié
    • tables : les données modélisées dans les routes et les entités, ainsi que le relations se retrouvent bien dans les tables écrites
  • 10 : Implémentation
    • Vous avez bien respecté votre plan de conception et votre API est fonctionnelle
    • Votre code est de qualité et bien organisé.

Introduction

Dans les TP on a vu la base de comment écrire une API avec poem et de comment utiliser sqlx pour stocker nos données en base de donnée.

L’objectif de ce projet, créer un applicatif full stack de votre choix et de votre conception. À commencer par son API web, son backend.

Lors d’une matière future avec Gilles, vous allez implémenter le frontend de votre application, en ReactJS.

Étape 0 : répartition des tâches

Rôles spéciaux :

  1. Chef·fe de projet
    • Fluidifie les échanges dans l’équipe, fait office de garde de l’ordre du jour des réunions et des sessions de travail.
    • Me remonte les difficultés.
    • S’assure que le rendu est bien fait, que les documents sont bien conforme à ce qui est demandé.
    • Centralise les questions du groupe.
  2. Responsable technique
    • S’assure de la base technique du projet, dès le début du projet pendant que le reste du groupe se focalise sur les étapes 1 et 2.
    • Documente la base technique pour que le reste du groupe puisse contribuer au dépôt.
    • Il ou elle peut se faire seconder.
  3. simple villageois·e
  4. loup garou
  5. soricière
  6. cupidon

Tout le groupe doit programmer. Répartissez-vous les tâches au moment de l’implémentation. Vous pouvez faire du peer-programming.

Étape 1 : choix du sujet

Fichier à rendre : readme.md

Commencez par choisir le projet sur lequel vous voulez travailler. Prenez la première séance pour trouver une idée qui vous plaît et validez-là avec moi avant de commencer la conception et l’implémentation.

Pour vous mettre en route, je vous propose quelques idée ci-dessous dans Annexe idées.

Étape 2 : conception

Fichiers à rendre : readme.md, base.sql, LFS:conception/*

Utilisez git lfs pour tous fichier binaire (images, PDF, etc.).

Avant de coder quoi que ce soit, prenez le temps de concevoir votre API. Faites la listes des entités que vous devez modéliser ainsi que les relations qui existent entre elles (cardinalité, possessions)

Faites aussi l’inventaire de vos routes, et ce que ce qu’elle vont renvoyer ou prendre en entrée. Les structures de données qui entrent et qui sortent d’une API s’appellent des DTO (data transfer objects).

Pour finir, faites aussi la liste des tables de base de données que vous devez créer pour vos entités, leur relations et toutes les données que vous voulez stocker.

Étape 3 : implémentation

Fichiers à rendre : Cargo.{toml,lock}, src/**/*.rs + tout fichier utile au projet en rust

Implémentez votre API, partagez-vous le travail au maximum.

Annexe : idées

Idée 1 : continuer sur la gestion de tâches

Vous pouvez continuer sur l’idée de base d’un applicatif de gestion de projets et de tâche, cherchez quelles fonctionnalités lui ajouter pour qu’il vous soit potentiellement utile. I

Idée 2 : VenueFlow

Imaginez, vous participez à un événement organisé par Nintendo. Vous recevez un planing par mail la veille, sur place le planing est imprimé et placardé sur des murs.

  • 10:00 - 10:30 présentation d’ouverture Grand Amphithéâtre
  • 10:30 - 13:30 pôles découverte hardware Stand 1
  • 10:30 - 14:00 pôle démo Mario Kart 12 Stand 2
  • 10:30 - 13:30 pôle démo Pikmin 6 Stand 3
  • 10:30 - 14:00 pôle démo DK Country 5 Stand 4
  • 11:15 - 11:45 interview avec les développeurs Petit Amphi A
  • 14:00 - 17:00 pôle démo jeu indés Stand 1
  • 14:00 - 17:00 pôle démo From Software Stand 3
  • 14:30 - 17:00 pôle démo Supergiant Games Stand 2
  • 17:00 - 17:30 discours de clôture Grand Amphithéâtre

Mais voilà, si vous avez déjà organisé un évènement dans votre vie ou si vous avez assisté à suffisament d’entre eux, vous savez surement trois choses :

  • il y a toujours des imprévus ;
  • les activités organisées en pôle peuvent avoir beaucoup d’attente ;
  • les invités (dont vous souvent) passent leur temps entre deux activités à déchiffrer le planning.

Toutes ces choses peuvent être augmentées/améliorées par un applicatif.

Côté API il faut modéliser tout ces données et les mettre à disposition, permettre leur saisie et modificiation.

Côté Frontend il faut réfléchir à comment mettre en avant la donnée pour l’afficher sur les téléphones des invités, sur des écrans dans les lieux de passage, les écrans des salles de conférences, etc.

Réfléchissez à ce que vous pouvez faire pour fluidifier des événements avec du public, comment faire pour gérer les imprévus, les changement de programmes, les retards, les changement de salles, les filles d’attentes (virtualisée), etc.

Des événements qui en bénéficieraient il y en a plein :

  • Carreer Summit à l’école,
  • Journées Portes Ouvertes,
  • séminaires,
  • soirée des associations,
  • etc.

Idée 3 : Tournois de jeux-vidéos

Souvenez-vous de ce début d’année scolaire 2024-2025. C’est la rentrée, vous êtes en classe pour qu’on vous présente le programme et qu’est-ce que l’on vous dit ? “Alors pour cette après-midi on m’a dit que je pouvais faire ce que je veux alors je vous propose de faire un tournoi de jeux vidéo.” Une superbe rentrée en perspective, l’heure du tournois approche, et le moment venu : c’est le drame. Rien est organisé, l’étudiant responsable de faire le tournoi MK et le tournoi Smash c’est complètement débiné.

Et si cette journée c’était passée différemment. Si vous aviez eu un outil pour vous aider à organiser ce tournoi ?

Réfléchissez à tout ce dont vous auriez besoin pour organiser un tournoi comment gérer :

  • matériel ;
  • joueurs ;
  • arbitres ;
  • matchs, etc.

Côté API il faut réfléchir à comment modéliser tout ça, quels genre de routes sont nécessaires, etc.

Côté Frontend il faut réfléchir à la présentation des données, l’interface des arbitres/gérants du tournois, l’interface joueur, l’interface à mettre sur les écrans ou en synthé sur le stream de l’événement.

Idée 4 : 89 Soutenances et Suivis

Imaginez, vous êtes étudiants à école 89. Difficile, je sais. Vous avez une soutenance de prévu ce jeudi. Deux cas possible : vous savez que vous passez ce jour mais c’est tout, on vous a donné un horaire de passage et vous ne l’aimez peut-être pas. Maintenant imaginez un monde ou vous pouvez choisir votre horaire de passage, en fonction de si vous voulez être débarrassés en début de journée ou si vous avec pas encore fini vos diapositives de présentation et voulez passer le plus tard possible.

Imaginez un nouveau cas de figure : vous avez plusieurs projets qui courent en même temps. Vous aimeriez sur votre vendredi faire un suivi avec trois profs différents, mais impossible. Ces profs ont beau avoir cours à 89 l’un à cours avec une autre classe, l’autre aussi et seul le dernier vous ai dédié. Imaginez un monde où vous comme tous les autres étudiants pourraient prendre un créneau de suivi avec chacun des profs présents. Au moment de la journée qui vous arrange.

Imaginez maintenant que tout ça, c’est pas juste votre imagination mais une réalité : ça pourrait l’être avec le travail de développeurs logiciels.

Concevez et implémentez cette solution logicielle de choix de créneaux de soutenance. Faites changer l’école pour qu’elles vous serve au mieux.

Idée 5 : 89 Suivi des étudiants

Dans une école, tous les étudiants n’ont pas besoin de la même quantité d’accompagnement par les mêmes personnes. Certains ont besoin de temps avec les admissions et la scolarité pour parler de difficultés personnelles. Certains ont besoin de temps avec la pédagogie pour des soucis dans un cours ou en méthodologie. Certains veulent se ré-orienter, ont des doutes, sont à risque de décrocher. Et il y en a aussi pour qui tout ce passe sans besoin d’accompagnement supplémentaire à celui reçu en salle avec leurs enseignant·e·s.

L’objectif d’une plateforme de suivi serait donc de limiter les chances de décrochage en faisant les choses suivantes.

  • Rendre évident les projets en cours, où trouver les consignes, comment et à qui les rendre.
  • Favoriser la communication étudiant·e-prof, étudiant·e-staff, prof-staff pour remonter des difficultés qui concernent un·e étudiant·e ou une classe ;
  • Enseignant·e et personnel doivent pouvoir :
    • déposer des commentaires sur les étudiant·e·s soit pour qu’ils soient vus par l’étudiant·e, ou pour qu’ils soient vus en interne du personnel pour agir et aider les étudiants en difficultés ;
    • noter la date des actions prises dans le but d’aider un·e étudiant·e et à quel date il faut revérifier que tout va bien.

Idée 6 : la votre

Vous pouvez apporter votre propre idée à ce projet. Que l’idée vienne de ce sujet ou de vous-même, faites valider votre approche avant de commencer à concevoir et implémenter quoi que ce soit.