IFT3225Livrable 2 · 15 %

Consommation et visualisation

Phase 2

Comment rendre une donnée d'ambiance lisible et actionnable pour un usager?

La phase 1 a produit une API qui expose l'ambiance d'un lieu. La phase 2 construit l'application qui la consomme et offre une interface réactive permettant de dialoguer et interroger le système.

01 Contexte

Au terme de la phase 1, vous disposez d'une API qui collecte, persiste et expose l'ambiance (interprétée) d'un lieu. La phase 2 vise à construire l'application cliente qui consomme votre API et la rend compréhensible pour une personne ou entité publique.

Vous devez construire une interface réactive de consommation et de visualisation, qui authentifie les actions protégées et qui reste lisible dans tous ses états (chargement, erreur, vide). Les lectures (consulter l'ambiance) sont publiques ; les écritures (soumettre une observation) demandent une authentification.

02 Travail à réaliser

Tâche 1 : Collecter de nouvelles données

À l'aide du mécanisme de collecte de la phase 1, recueillir de nouvelles données : au moins 12 nouvelles mesures, réparties sur3 lieux différents. La reprise du lieu de la phase 1 est permise comme l'un des trois. Ces données alimentent les visualisations et rendent l'application réaliste.

Tâche 2 : Application cliente, accès public

Construire la partie publique de l'application cliente. L'interface doit rendre le portrait lisible d'un coup d'œil en utilisant un badge de classification (calme, modéré, animé), un graphe d'historique et les créneaux calmes.

Il faut construire une couche client qui isole les appels à votre API. Tout le travail de classification et d'interprétation doit être fait côté serveur. L'espace public du client est responsable de l'affichage et de l'interrogation des données. Toutefois, les réponses de l'API doivent être descriptives pour rester compréhensible sans documentation externe.

La visualisation comprend au minimum deux représentations complémentaires :

Tâche 3 : Actions protégées et espace compte

L'application permet à un usager de se créer un compte et s'authentifier. L'interface reflète l'état connecté ou déconnecté et affiche ou masque les actions selon ce qui est permis.
Elle présente un moyen de soumettre une observation (une fois authentifié) et permet de gérer ses lieux, c'est-à-dire les lieux où il a effectué des écoutes, et ses lieux favoris.

Tâche 4 : Infrastructure, mise à jour

La phase 2 fait apparaître des besoins que l'infrastructure de la phase 1 ne couvrait pas forcément. Mettre l'API à jour pour les satisfaire, sans casser ce qui existait :

03 Gestion de projet

Le travail se fait en équipe et doit se piloter comme un projet, pas seulement se coder.

04 Bonus

Deux extensions sont valorisées au-delà du socle et peuvent ajouter chacune jusqu'à 5 % à la note du livrable.

  1. Backend en TypeScript: Porter le serveur de la phase 1 en TypeScript. Typer le modèle, la couche d'accès aux données et les routes, pour que le contrat entre le client et le serveur soit vérifié à la compilation.
  2. Temps réel: Pousser les mises à jour d'ambiance vers le client (SSE ou WebSocket) plutôt que de les faire interroger, pour que l'affichage suive l'état sans rechargement.

05 Livrables

Implémentation Dépôt Git

L'application cliente (React) doit satisfaire les exigences suivantes :

README.md dans le dépôt

Document technique pour un développeur qui veut relancer le projet :

Rapport (un par équipe)PDF sur Studium

Le rapport décrit la conception de l'interface et les choix faits. Il suit la structure suivante :

  1. Conception de l'interface : les blocs, les vues, la méthodologie suivie, du layout à l'assemblage.
  2. Consommation de l'API : la couche client, les endpoints utilisés, la gestion des erreurs et des cas limites.
  3. Visualisation : les représentations choisies, comment les seuils et les unités rendent le portrait lisible, la justification du seuil de fraîcheur de la carte (au-delà duquel une mesure n'est plus récente), ce qui a été écarté.
  4. Authentification et espace compte : le flux côté client, les actions protégées, la conservation du justificatif, la façon dont l'état se reflète dans l'interface, et l'extension du modèle qui lie une observation à son auteur (pour le récapitulatif des contributions et la notion de « ses lieux »).
  5. Mise à jour de l'infrastructure : ce qui a été ajouté ou changé dans le modèle et les endpoints de la phase 1 (coordonnées, auteur des observations, classification exposée), et comment la collecte et les lectures existantes ont été préservées.
  6. Réactivité et utilisabilité : les états gérés, la transparence, les heuristiques retenues.
  7. Limites et évolution : compromis assumés, ce qui changerait avec plus de temps, et le cas échéant les bonus réalisés.

06 Évaluation

CritèrePoidsCe qu'on évalue
Interface et décomposition10 %Découpage en composants, layout, méthodologie d'assemblage
Qualité du code de l'application15 %Couche client isolée, organisation claire, états gérés, lisibilité
Infrastructure (mise à jour)10 %Coordonnées, auteur des observations, classification exposée, sans rompre la phase 1
Visualisation25 %Vue carte, vue détaillée (classification, historique, créneaux calmes), lisibilité
Authentification15 %Flux côté client, actions protégées, espace compte, état connecté, lectures publiques
Travail d'équipe et suivi10 %Tickets attribués et suivis, rythme de commits (au moins trois par semaine et par membre, messages pertinents), vérification de la compréhension
Documentation5 %README reproductible, configuration de l'API documentée
Rapport10 %Analyse des choix, mise à jour de l'infrastructure, identification des limites

07 Échéancier

Semaine du 22 juin
Interface esquissée ; mise à jour de l'infrastructure (coordonnées, auteur, classification) ;
Semaine du 29 juin
Nouvelles données collectées (10 mesures, 3 lieux) ; couche client qui liste les lieux et affiche un portrait d'ambiance;
Semaine du 6 juillet
Visualisations (vue carte, historique, créneaux calmes) ; états de chargement et d'erreur; Présentation intermédiaire de l'interface publique (3 à 5 min) ;
Semaine du 13 juillet
Soumission d'observations ; authentification des actions protégées et espace compte
Remise · 19 juillet
Dépôt Git (release) + rapport PDF sur Studium