Sujets de projet informatique 2A

Sujets 2024-2025

1 Fennec on the road 🚀

Tuteur : Adrien Lacaille

Présentation

Dans ce projet, vous aurez l’opportunité de plonger dans le monde fascinant des statistiques et des compétitions sur le jeu vidéo Rocket League. En utilisant l’API https://zsr.octane.gg/, vous allez développer une application dédiée aux amateurs d’e-sport et aux fans de ce jeu vidéo compétitif. Le but de cette application est de fournir une plateforme complète et interactive permettant aux utilisateurs de consulter des statistiques détaillées des matchs, de suivre les prochains événements, de gérer des tournois personnalisés et d’enrichir l’expérience utilisateur par des fonctionnalités avancées comme l’agrégation de données et les systèmes de paris.

Fonctionnalités de base

Votre application devra intégrer les fonctionnalités essentielles suivantes :

  • F1 : Permettre aux utilisateurs de consulter des statistiques détaillées sur les matchs déjà disputés, incluant les scores, les performances des équipes et des joueurs
  • F2 : Proposer un calendrier des futurs matchs avec des informations telles que les équipes en compétition, les dates et heures des rencontres, et les lieux éventuels.
  • F3 : Mettre en place un système sécurisé d’authentification permettant aux utilisateurs autorisés d’ajouter ou de modifier des informations relatives aux matchs.
  • F4 : Offrir la possibilité de créer et de gérer des tournois personnalisés, avec des fonctionnalités pour inscrire des équipes, définir des calendriers de match, et suivre les résultats en temps réel.

Fonctionnalités optionnelles

Pour aller au-delà des exigences de base et rendre votre application encore plus attractive, vous pouvez intégrer les fonctionnalités optionnelles suivantes :

  • FO1 : Permettre aux utilisateurs d’obtenir des analyses consolidées par équipe et par joueur, en agrégeant les données sur les performances individuelles et collectives afin de fournir des indices de performances.
  • FO2 : Développer un système de paris interactif où les utilisateurs peuvent parier sur les résultats des matchs et des tournois, ajoutant ainsi une dimension ludique et compétitive à l’application.

Conseils / Outils …

Pour maximiser votre expérience et la réussite de ce projet, voici quelques conseils et outils essentiels :

Technologies à utiliser :

  • Utilisez une base de données PostgreSQL pour stocker et gérer vos données.
  • Développez votre application en Python.
  • Concentrez-vous uniquement sur une application en ligne de commande (CLI) sans interface web.

Qualité du code :

  • Réalisez des tests unitaires pour garantir la fiabilité de votre code.
  • Mesurez la couverture de code (coverage) pour vous assurer que tous les aspects de votre application sont testés.
  • Utilisez des outils de linting pour maintenir un code propre et conforme aux standards.

Versionnement et intégration continue :

  • Versionnez votre projet sur Git pour suivre les modifications et collaborer efficacement.
  • Mettez en place une intégration continue (CI) pour automatiser vos tests.

Organisation et suivi :

  • Organisez un point hebdomadaire pour suivre vos progrès, discuter des obstacles rencontrés et ajuster votre plan de travail en conséquence. Cela vous permettra de progresser régulièrement et de mener à bien ce projet.

Initiatives et créativité :

  • Prenez des initiatives pour réaliser d’autres fonctionnalités optionnelles et apporter votre touche personnelle au projet. Votre créativité et votre capacité à aller au-delà des attentes de base seront valorisées.

2 The DM’s Sound Buddy 🎵

Tuteur : Cyriel Mallart

Présentation

Lors de ce projet, vous allez créer une application de gestion de banque de sons. Le but final est de pouvoir gérer des effets sonores pour créer une ambiance lors de parties de jeu de rôle ou autre storytelling. Le but est donc de pouvoir rechercher des effets sonores, et en créer des playlists pour les jouer de façon simple lors d’une partie de jeu de rôle. Les sons seront issus de Freesound, qui propose une API de recherche de sons basée sur des mots-clés. Votre rôle sera d’identifier les besoins des utilisateur-ice-s, de modeliser l’application en conséquence et de décider comment gérer le stockage des sons et des informations sur les sons. Les fonctionnalités de bases ci-dessus, et au moins une fonctionnalité optionelle au choix sont attendues.

API : https://freesound.org/apiv2/

Site web Freesound (pour vous faire une idée des possibilités): https://freesound.org/

Fonctionnalités de base

  • F1 : Création d’utilisateurs, de playlists
  • F2 : Recherche de sons et téléchargement (sans redondances !)
  • F3 : Lecture des sons lors d’une partie
  • F4 : Consultation et copie des playlists d’autres utilisateur.ice.s

Fonctionnalités optionnelles

  • FO1 : Recherche avancée de sons par similarité avec le reste de la playlist, termes connexes, commentaires des utilisateur.ice.s Freesound ou information de popularité
  • F02 : Choix de lecture répétée à des temps aléatoires (bruits de nature, de grincement de porte, etc.)
  • F03 : Jeu d’un son en boucle
  • F04 : Jeu de plusieurs sons en simultané

Conseils / Outils …

  • La librairie Nava est conseillée pour jouer les sons, mais tout autre librairie est autorisée si vous avez une autre préférence.
  • Au vu des téléchargements nécessaires (téléchargement de certains sons de base notamment), un script d’initialisation sera attendu dans le code.
  • Une suite de tests est aussi attendue, mais les tests feront partie intégrante des techniques que nous apprendons ensemble et cela fera moins mal que vous ne le pensez ;)
  • Le produit final sera un menu interactif en console. Aucune interface graphique n’est attendue, et une interface autre que console ne sera donc pas prise en compte pour l’évaluation du projet.
  • Pour les fonctionnalités optionnelles, toute initiative ou proposition originale sera valorisée, si validée avec votre tuteur.

3 My Kitchen 👨‍🍳

Tuteur : Bryan Truwant

Présentation

Ce projet consiste en le développement d’une application de recettes de cuisines. Pour cela vous devrez utiliser les données des recettes via l’API TheMealDB. Vous devrez décider quelles données conserver ou non dans votre base de données PostgreSQL pour les besoins de votre application. Vous créerez aussi un modèle de données adapté aux fonctionnalités que vous allez développer allant de l’affichage d’une recette à la suggestion de recettes en fonction des goûts de l’utilisateur en passant par la gestion d’une liste de courses.

Fonctionnalités de base

  • F1 : Afficher la liste des recettes
  • F2 : Afficher une recette (Au minimum : Titre, ingrédients, consignes, note, commentaires)
  • F3 : Recettes favorites : Ajout, visualisation, suppression
  • F4 : Avis sur les recettes : Notes et commentaires

Fonctionnalités optionnelles

  • FO1 : Recherche des recettes par ingrédients
  • FO2 : Liste de courses : Ajout des ingrédients d’une recette à la liste de courses, visualisation de la liste et suppression des éléments achetés
  • FO3 : Ingrédients favoris et Ingrédients non désirés (Ajout, visualisation, suppression)
  • FO4 : Proposer des recettes qui ne sont pas dans les recettes favorites contenant au moins un ingrédient favori et aucun ingrédient non désiré

4 StreamSmart 🎥

Tuteur : Alexandre Bidon

Présentation

Quel abonnement streaming choisir pour ne rater aucun de mes films préférés ? Ce projet vise à développer un outil comparatif qui analyse les catalogues de différentes plateformes et recommande l’abonnement le plus adapté à vos goûts cinématographiques. L’utilisateur crée sa watchlist et l’application lui retourne l’abonnement qui correspond le mieux à votre besoin (abonnement le plus rentable, abonnement qui propose le plus de films dans la watchlist, etc).

Fonctionnalités de base

  • F1 : Gestion des utilisateurs (Créer un utilisateur, Se connecter, Supprimer un utilisateur)
  • F2 : Rechercher un film ou une série par son nom
  • F3 : Pour un film ou une série, voir la liste des plateformes sur lequel il/elle est disponible
  • F4 : Gestion de watchlist (Créer une watchlist, Ajouter un film à une watchlist, Supprimer une watchlist)
  • F5 : Pour une watchlist, proposer l’abonnement de streaming le plus rentable (critère libre, par exemple l’abonnement avec le meilleur ratio prix/nombre de films proposés ou l’abonnement qui propose le + de films)

Fonctionnalités optionnelles

  • FO1 : Gestion des différents tier d’abonnements (par exemple rajouter un critère avec ou sans pub, choisir sa résolution d’écran)
  • FO2 : Gestion de la localisation de l’utilisateur (Les plateformes ne proposent pas les mêmes films selon les pays)
  • FO3 : Gestion des abonnements plus complexes (par exemple l’offre rat+ de Canal qui propose plusieurs services de streaming en un)

Conseils / Outils …

Pour réaliser ce projet, vous utiliserez l’API de The Movie Database :

Cette API propose déjà un outil pour créer des watchlists, vous devrez cependant fournir votre propre implémentation.


5 Collection de mangas 📚

Tutrice : Lissa Chen

Présentation

Ce projet vous demandera de créer une application qui permettra aux utilisateurs de stocker et de partager des collections de mangas. Les utilisateurs pourront aussi donner leurs avis sur les mangas de leur choix.

Il faudra tenir des contraintes de requêtes par secondes à l’API.

API à utiliser : Jikan API

Fonctionnalités de base

En tant qu’utilisateur, je veux pouvoir :

  1. M’inscrire/connecter/déconnecter/désinscrire à l’application (gestion des utilisateurs et des informations qui leur sont propres).
  2. Afficher les informations d’un manga en l’ayant recherché par son titre.
  3. Rédiger/Mettre à jour/Supprimer mes avis sur un manga et consulter ceux des autres utilisateurs.
  4. Créer/Mettre à jour/Supprimer des collections “cohérentes” de mangas, et consulter celles des autres utilisateurs. La collection devra contenir :
    • le titre de ma collection
    • la description de ma collection
    • les titres des mangas de ma collection
  5. Créer/Mettre à jour/Supprimer une collection des mangas que je possède “physiquement”, et consulter celle des autres utilisateurs. La collection devra contenir pour chaque manga :
    • le titre du manga
    • le numéro du dernier tome acquis
    • le(s) numéro(s) des tomes manquants par rapport au dernier tome acquis de la série (ensemble des tomes d’un même titre)
    • le status de la série, c’est-à-dire si je continue d’acheter les tomes ou non (reading/dropped)

Exemple de collection des mangas que je possède “physiquement” :

Titre N° du dernier tome acquis N° des tomes manquants Status
One Piece 107 106 En cours
One Punch Man 18 16, 17 En cours
Spy x Family 3 0 Dropped

Exemple de collection “cohérente” :

Titre de ma collection : Mangas préférés Description de ma collection : Liste de mes mangas préférés Mangas de ma collection : Oshi no ko, Les Carnets de l’Apothicaire, March comes in like a lion

Fonctionnalités optionnelles

  • Créer/Modifier/Supprimer des tier list de mangas
  • Accéder aux informations d’un manga depuis une collection
  • Toute autre fonctionnalité que vous trouvez sympa

Conseils / Outils …

Une application avec les fonctionnalités de base, sans bug et avec un code clair sera plus valorisée qu’une application avec des fonctionnalités optionnelles mais un code “brouillon” et des bugs. Favorisez un code maintenable.


6 Vous êtes ici 🎯

l’API qui vous dit où vous êtes… enfin si c’est en France

Tuteur : Thierry Mathé

Présentation

Comme vous le savez la France est divisée en plusieurs zonages : zonages administratifs, zonages d’études, … Le but du projet est de créer une API qui permettra de :

  1. Donner des informations pour une de ces subdivisions, par exemple quel est le département 27, ou quelle est la commune 13055 ?
  2. Dire dans quelle zone se trouve un point repéré par ses coordonnées géographiques. Par exemple: mais dans quel Iris se trouve les coordonnées GPS 48.114503, -1.681217 (et d’ailleurs qu’est que c’est qu’un Iris ???…) ?
  3. Comme le 2. mais pour une liste de points. Le résultat sera alors un fichier (csv, xlsx, json, … c’est vous qui voyez) qui sera transmis dans la réponse de la requête.

Fonctionnalités de base

  • F1 : API-Rest de consultation donnant une URI pour chaque zone d’un zonage. Par exemple l’URI monAPI/zonage/departement/2023/35 permettra d’avoir les informations pour le département de l’Ille et Vilaine en 2023 et l’URI monAPI/zonage/commune/2023/69123 les informations sur la commune de Lyon en 2023,
  • F2 : Endpoint permettant la localisation d’un point par exemple monAPI/ousuisje/departement?lat=48.114503&long=-1.681217&annee=2023 renvoie le département où se trouve le point dont les coordonnées sont indiquées (latitude et longitude),
  • F3 : Endpoint permettant de transmettre une liste de points dans une requete POST qui renvoie les mêmes informations pour chacun des points sous la forme d’un fichier.

Fonctionnalités optionnelles

  • FO1 : Ajouter des zonages
  • FO2 : Ajouter des années de géographies (et oui la géographie change tous les ans !)
  • FO2 : Ajouter d’autres formats de retour pour la F3, voire même retourner une carte au format jpeg ou SVC!…

Remarques: Même si ces fonctionnalités ne sont pas réalisées, il faudra construire l’application de telle sorte qu’elle puisse les accueillir facilement.

Conseils / Outils …

Pour réaliser ce projet vous vous appuierez sur le code officiel géographique de l’Insee et sur les contours de ces différents zonages donnés par l’IGN au format shape.

Enfin pour ceux qui se demanderaient ce que c’est qu’un Iris et à quoi ils ressemblent


7 Réseau social ciné 🍿

Tuteur : Clément Valot

Présentation

L’inspiration de ce sujet est SensCritique, un site communautaire où les utilisateurs notent et critiquent des films (et séries, livres… Mais on va centrer le sujet sur les films 🎥)

Le projet va être pensé comme une application web, qui va exposer une API REST, qu’on pourra tester avec un client API (e.g. Postman ou Bruno).

La base de données de films sera construite en s’interfaçant avec l’API TheMovieDB. Le reste de la base de données devra être alimenté par vos soins.

Fonctionnalités de base

  • F1 : Inscription et authentification sécurisée
  • F2 : Rechercher un film et lui attribuer une note sur 10 (modifiable et effaçable)
  • F3 : Obtenir des informations sur un film (Informations techniques, note moyenne des utilisateurs du site, note moyenne de mes éclaireurs…)
  • F4 : Ajouter un autre utilisateur à ma liste d’“éclaireurs” et obtenir des informations sur sa collection de films (Nombre de films vus, notes sur chacun des films, films vus en commun…)

Fonctionnalités optionnelles

  • FO1 : Ajout de commentaires ou critiques sur les films
  • FO2 : Algorithme de recommandation basé sur les films déjà vus et notés
  • FO3 : Les axes d’extension de l’application sont nombreux, vous avez un site entier existant pour puiser l’inspiration, toute fonctionnalité intéressante peut être suggérée à votre tuteur 😊
  • FO4 : Trouver un nom qui claque pour l’application, votre tuteur ne brille pas par sa créativité

Conseils / Outils…

Un template de projet sera fourni, avec une configuration d’environnement de développement à respecter impérativement, ainsi que des suggestions de librairies à utiliser pour la DB/API.


8 Spotify Analytics 📶

Tuteur : Samuel Goutin

Présentation

Ce projet vise à créer un outil permettant l’analyse de la fréquentation d’un site de musique (de type Spotify). Pour cela, nous avons à notre disposition le flux d’événements de navigation du site. Il nous informe en temps réel de chaque action réalisée sur le site. L’outil devra permettre de mieux comprendre par qui, quand et comment le site est consulté en répondant à des questions stratégiques.

Fonctionnalités de base

L’outil devra proposer un webservice permettant de répondre aux questions suivantes :

  • F1 : Quelle est la durée moyenne d’une session sur le site ?
  • F2 : Quelle est la localisation géographique des utilisateurs du site ?
  • F3 : Quels sont les artistes les plus écoutés ?

La granularité temporelle devra être un paramètre ajustable pour chaque question. Par exemple, il devra être possible d’obtenir la liste des artistes les plus écoutés pour chaque minute, heure, jour ou mois.

Fonctionnalités optionnelles

  • FO1 : Proposez une visualisation graphique dynamique pour les questions F1, F2 et F3. Pour cela, vous pouvez utiliser les bibliothèques streamlit ou dash.
  • FO2 : Mettez en place une chaîne d’intégration continue (CI) pour automatiser vos tests et le packaging de votre projet avec Docker.