--- title: Sujets pour le projet informatique de deuxième année (2019-2020) robots: noindex, nofollow breaks: false toc_depth: 1 --- [TOC] <div style="page-break-after: always;"></div> # Application de rencontres *Antoine Brunetti* ## Contexte Le but de ce projet est de réaliser une application de rencontres comme Tinder, Once ou Happn. Comme toutes les applications de rencontre du marché, chaque utilisateur disposera d'un profil, aura la possibilité créer des relations avec d'autres utilisateurs par le biais d'une action. Il disposera également d'une messagerie pour pouvoir interagir avec ses potentiels matchs et pourra leur proposer des rendez-vous dans différents lieux courants (bars, parcs, restaurants). Après inscription et authentification à l'application, l'utilisateur aura la possibilité de consulter son profil, accéder à sa messagerie ou à un écran de navigation lui permettant de matcher d'autres utilisateurs. Il pourra, dans l'onglet profil, modifier/ajouter des photos, des passions et une description associée. Dans l'onglet messagerie, il pourra accéder à tous les utilisateurs avec lesquels il est en relation, envoyer un message, effectuer une demande de rendez-vous et sera habilité à consulter l'historique des messages envoyés et reçus. Enfin il sera possible dans l'onglet navigation, de consulter le profil des utilisateurs concernés et de valider ou non la prise de contact. ## Fonctionnalités de base attendues * Authentification et inscription pour l'utilisateur * Création d'un système de messagerie entre les clients de l'application * Consommation d'une API de lieux pour la prise de rendez-vous (API REST de Foursquare) * Permettre aux membres connectés de créer des relations avec d'autres membres * Recupération de l'historique de messagerie (au format JSON) ## Fonctionnalités avancées * Création d'un système de notifications à la connexion * Création d'un système de sauvegarde de la base de données * Géolocalisation : Permettre a l'utilisateur de proposer un rendez vous près de sa position actuelle. * Chatbot : Création d'un utilisateur bot qui pourra interagir avec des clients réels. * Optimisation : Création d'un système de score permettant de relier des personnes de préférences similaires ensemble ( cc: [problème du voyageur de commerce](https://fr.wikipedia.org/wiki/Probl%C3%A8me_du_voyageur_de_commerce) ) <div style="page-break-after: always;"></div> # ChronoRun *Frédéric Chantrel* ## Résumé du travail demandé La FFA (Fédération Française d’Athlétisme) fait appel à vous pour son nouveau logiciel de chronométrage des courses hors stade qu’elle met à disposition des organisateurs de courses sur route et trails. Le but de ce projet est de coder une application gérant le chronométrage et le classement dans les courses. Pour ce projet on se focalisera sur les épreuves de course à pieds (courses sur route et trails) mais votre application sera la plus évolutive possible et devrait permettre par exemple d’ajouter plus tard des épreuves de duathlon, triathlon, etc. Des temps intermédiaires pourront être enregistrés. Votre application devra permettre de gérer les inscriptions, les classements individuels, classements par équipe, classements sur des épreuves relais, etc. On pourra permettre à chaque organisateur de paramétrer les podiums qu’il souhaite récompenser. Le sujet est cadré mais se veut ouvert à toute fonctionnalité ou adaptation que vous jugerez utile en accord avec votre encadrant. Une épreuve aura au moins les caractéristiques suivantes : * libellé de l’épreuve * date et heure * lieu * distance(s) * organisateur Une inscription portera les informations suivantes : * nom * prénom * adresse * année de naissance * Sexe * mail * Téléphone * Numéro de licence (si licencié) * association * club Pour ce travail nous vous fournirons un fichier de quelques courses au format csv que vous pourrez compléter et/ou remplacer. D'autre part nous vous fournirons une API qui permettra de générer une liste de participants pour une course, votre application devra donc appeler cette API pour connaitre les participants à une épreuve. L’intérêt grand public d’une telle application est de l’utiliser en mode web sur son desktop, sa tablette ou son smartphone mais pour le projet nous nous limiterons à une application en mode console en essayant de reproduire l’ensemble des écrans et fonctionnalités qu’on aimerait trouver. ## Les fonctionnalités indispensables pour votre application * Ajouter des épreuves via la console ET via un import de multiples épreuves. * Afficher le classement général d’une épreuve. * Afficher les différents podiums (individuels et par équipes). * Proposer un export JSON d’une course. * Recherche par nom/dossard ## Les fonctionnalités optionnelles * Ajouter la gestion de challenges sur plusieurs courses. * Indiquer les qualifiés aux championnats de France sur les épreuves qualificatives. * Utiliser les temps intermédiaires pour détecter les tricheurs éventuels. * Estimer qui seront les favoris d’une épreuve. * Calculer un indicateur de type ITRA (si le temps le permet). ## Contraintes à respecter * L’application devra être évolutive. * Le nombre d’épreuves devra être le plus élevé possible pour apprécier l’application. * Il faudra prévoir de pouvoir générer des inscriptions et des résultats pour avoir un jeu de données significatif sans devoir tout saisir. * N'hésitez pas à proposer des adaptations ou évolutions pour cette application. <div style="page-break-after: always;"></div> # BreweryDB *Antoine Lecacheur* L'application créée permettra d'accéder, et de s'approprier la source d'informations la plus complète sur l'industrie de la bière ! Les données utilisées seront obtenues par le biais du web- service [BreweryDB](https://www.brewerydb.com/developers/docs). Du nom d'une bière à sa catégorie en passant par les ingrédients nécessaires à sa préparation, la quantité d'informations à disposition est considérable. ## Les objectifs du projet * Créer un système d'authentification basique d'utilisateurs avec mail / username et mot de passe, qui seront par exemple stockés dans la base de données. * Seul un utilisateur connecté pourra interagir avec l'application. * Afficher la liste des bières connues et leur catégorie. * Afficher les ingrédients nécessaires à la préparation d'une bière sélectionnée (Malt, Coriandre.. !). * Créer des fonctions de recherche de bières (par nom, par catégorie...) * Pouvoir ajouter / modifier / supprimer des bières, catégories, ingrédients... ## Bonus Le web service regorge d'informations en tout genre, libre à vous de vous en inspirer pour rajouter des fonctionnalités, quelques exemples : * Mettre en évidence des événéments relatifs au monde de la bière. * Créer une association (guild). <div style="page-break-after: always;"></div> # Prise de rendez-vous chez un médecin *Jean-Michel Leclercq* ## Présentation Aujourd'hui, la prise de rendez-vous en ligne s'est démocratisée et nous facilite grandement la vie. Votre projet sera de reproduire ce concept avec la médecine. Le service [BetterDoctor](https://developer.betterdoctor.com/) vous fournira toutes les informations nécessaires sur les professionnels de santé. ## Fonctionnalités obligatoires * Gestion d'un compte utilisateur de l'application * Recherche de médecins selon des critéres de recherche (spécialité, lieu, etc) * Affichage du détail de la fiche d'un médecin et sélection d'un créneau de rendez-vous * Gestion du calendrier de réservation par le médecin ## Fonctionnalités bonus A vous de faire marcher votre créativité pour vous démarquer de la concurrence. Vous devrez rajouter 2 fonctionnalités majeures dans votre application (A valider avec l'enseignant) <div style="page-break-after: always;"></div> # Développer son compte Instagram grâce à python *Sylvain Leveugle* ## contenu Le principe est de coder un package python afin de faire croitre un compte Instagram. Le module python utilisé pour récupérer les données est InstagramApi L’application finale doit permettre de : * Se connecter à l’application python avec ses identifiants Instagram (ou des identifiants personnalisés, puis entrer de nouveau ses identifiants Instagram par la suite) * Avoir un petit menu textuel afin de choisir quoi faire avec l’application * Avoir une liste de photos sur l’ordinateur, pouvoir piocher dans cette liste pour poster automatiquement une photo sur son compte Instagram (par appel d’une API) * Pouvoir liker automatiquement un nombre de comptes Instagram de son choix (parcourir la liste des followers de nos follower, et suivre ceux que l’on ne suit pas encore). * Pouvoir dislike automatiquement les comptes likés depuis plus de 2 jours * Pouvoir envoyer un message à un autre utilisateur * Entretenir une base de données contenant, pour les différents comptes de l’application, les différentes connexions, les différents appels de l’application, le nombre d’abonnés, les informations publiques de ces abonnés, les photos uploadées, les tags associés, les conversations. La base de données devra aussi contenir un historique des actions effectuées. * Pouvoir sortir un rapport avec certaines infos sur notre compte (nombre de follower en plus par semaine, likes moyen des photos…). Le but n’est pas d’avoir un rapport compliqué mais d’utiliser la base de données afin d’en sortir quelques infos au format csv. ## Bonus * Automatiser avec un cron l’exécution de l’upload des photos et/ou des likes de personnes, afin de garantir la croissance automatique de son compte Instagram. * Avoir un module de l’application permettant de récupérer des photos libres de droit sur internet grâce à du scrapping * Récupérer des photos d'autres utilisateurs liées à un tag * Récupérer des photos via une autre API : https://woofbot.io/ * Autres bonus définis par les élèves <div style="page-break-after: always;"></div> # Application de santé connectée *Charles Ngor* ## Présentation Le but de cette application est de récupérer des données d'activité physique issues d'objets connectés afin de les agréger et de les afficher sous la forme de graphes. Vous pourrez utiliser pour cela votre téléphone ou montre connectée (si vous en possédez une) comme capteur pour mesurer des données telles que votre nombre de pas, votre actimétrie (repos, marche, course, vélo, etc..), votre fréquence cardiaque et plus si possible. Vous vous appuierez sur une application grand public de type Google Fit, Withings, Strava, Xiaomi, Garmin pour stocker vos données. Ces applications proposent une API REST permettant un accès aux données. L'application doit collecter des données d'activités issues de 2 sources d'API différentes. Les données de ces 2 sources doivent être agrégées et permettre l'affichage de votre activité physique par jour et par semaine. Vous veillerez à optimiser le stockage des données pour optimiser les temps de récupération des données par jour et par semaine. Les fonctionnalités souhaitées sont : * Sur la vue journée * Répartition du nombre de pas sur la journée * Répartition de l'actimétrie sur la journée * Sur la vue semaine * Nombre de pas moyen par jour de la semaine * Durée moyenne par type d'activité par jour de la semaine * Affichage des données agrégées sur un graphe Les fonctionnalités complémentaires sont : * Proposition d'une synthèse d'activité personnalisée (tendance, évènements importants, min/max, médiane) * Comparaison de données par période * Gamification de l'application <div style="page-break-after: always;"></div> # Réalisation d'une API d'authentification par jetons *Thierry Mathé* ## Présentation L'authentification par jeton permet de pouvoir accéder à plusieurs ressources en ne s'étant authentifié qu'une seule fois. Schématiquement, l'utilisateur va envoyer son identifiant et son mot de passe à un service d'authentification, si l'authentification réussi, le service lui envoie en retour un jeton. Ce jeton sera joint à chacune de ses actions sur les ressources concernées, il l'authentifiera durant un certain temps. À chaque requête reçue, la ressources interroge le service d'authentification pour vérifier que le jeton est valide c'est-à-dire qu'il a bien été émis par ce service d'authentification et qu'il n'a pas expiré. Si c'est le cas elle procède à la requête. Par contre si le jeton n'est pas valable elle refuse la requête. L'utilisateur est alors invité à s'authentifier de nouveau. La durée de vie d'un jeton peut être : * fixe, par exemple cinq minutes, un jour * être liée à l'activité de l'utilisateur par exemple un jeton peut être périmé s'il n'est pas utilisé durant 10 minutes * les deux le jeton est par exemple valable un heure sauf s'il n'est plus utiliser durant 10 minutes Le projet à pour but de donner une implémentation simplifiée de ce système à travers un logiciel de jeux simples. ## Fonctionnalités de base * Une api d'authentification par jeton * Deux api (ou plus) implémentant chacune un jeu simple (guess the number, master mind...) * Une application permettant aux utilisateurs inscrits de jouer à ces jeux Chaque appel aux api de jeux devront être authentifiés par un jeton donné par l'api d'authentification ## Fonctionnalités avancées * Gestions de tableau de meilleurs scores par joueur et par jeux * Jeux supplémentaires * Jeux à plusieurs joueur (allumettes, battaille navalle) <div style="page-break-after: always;"></div> # Mon astro'portail *Geoffrey Pagniez* ## contenu Le ciel est très vaste, trop vaste... Tout astronome débutant est perdu quand il cherche quoi regarder dans son téléscope. Le but de ce projet est de simplifier l'accès à l'astronomie aux débutant en proposant un portail de resources astronomiques. L'application permet un accès simple aux renseignements sur les objets célestes (planètes, galaxies, nébuleuses, ...) qu'il souhaitera découvrir et d'en garder les informations pour se constituer son annuaire personnalisé. En se connectant à son compte, un champ de recherche permettra de trouver les informations nécessaires sur un objet du ciel. Il pourra choisir de le garder dans son catalogue, d'y ajouter des notes, de choisir une photo de l'objet pour la représenter, etc... L'application permettra de gérer des collections, de filtrer les objets en fonction de leur type ou de tags prédéfinis, modifier, supprimer ou recharger les données. todo ## Pour aller plus loin * suggestion à partir des choix des autres utilisateurs / système de top des objets * affichage d'une carte du ciel localisant l'objet recherché * partage de collection entre utilisateurs