Skip to content

Application spectateur (surface publique du Gateway)

Référence sur l'application spectateur Timers Studio : ce que voit le public sur /ask/<room>, la gestion d'identité sans login, les permissions et l'héritage du branding de la room.

Mis à jour le

Application spectateur (surface publique du Gateway)

L’application spectateur est la face publique du module Gateway. C’est ce que voit réellement une personne dans le public quand elle ouvre une room Timers Studio sur son téléphone : une page légère, sans login, servie sur timers.studio/ask/<room>. Tout le reste de la plateforme — Studio, Moderator, Player — lui reste caché. Cette surface est volontairement étroite.

Un spectateur y arrive de deux façons. Soit il scanne un QR code affiché sur scène, sur une slide ou dans le programme de l’événement, soit il tape une URL courte distribuée par l’organisateur. Dans les deux cas, le chemin est le même : /ask/<room> résout la room dans la table controllers et charge l’UI public. Pas de lobby, pas de création de compte, pas de prompt email.

Ce qu’un spectateur voit

L’app est mobile-first, pouce-friendly, avec un thème sombre par défaut. Dès le chargement, un spectateur peut accéder à :

  • Poser une question — un formulaire de 280 caractères qui écrit dans spatial_questions. Un sélecteur de siège optionnel (SeatSelector) attache un vector_position et un zone_id pour que le directeur sache où se trouve la personne.
  • Voter à un poll liveSpectatorPollVote remonte depuis le bas de l’écran dès que le directeur ouvre un poll. Il prend la priorité sur le formulaire de question jusqu’au vote ou à la clôture.
  • Agenda — une vue en lecture seule du déroulé, visible quand l’organisateur la laisse activée. Elle reflète les mêmes données que celles éditées dans le module Agenda.
  • Badge live — un petit indicateur lié à controllers.timer_state qui bascule en LIVE pendant qu’un timer tourne sur scène.
  • Écran de succès — après l’envoi d’une question, une confirmation avec un bouton reset pour que le même appareil puisse en envoyer une autre.

Les onglets restent abonnés en arrière-plan. Quand le directeur ouvre un poll, le spectateur n’a pas besoin de rafraîchir ; la feuille de vote arrive toute seule.

Identité et confidentialité

L’application spectateur ne demande jamais de mot de passe. L’identité tient dans un spectator_id conservé dans le navigateur, pas dans une session serveur.

  • À la première visite, l’app génère un spectator_id et le stocke dans localStorage (clé propre à la room, par exemple fp_<room>).
  • Une ligne est insérée dans spectators avec cet id, le room_id et un nickname optionnel.
  • Un retour depuis le même appareil réutilise le même spectator_id, donc les compteurs opérateur ne comptent pas deux fois quelqu’un qui rouvre la page.
  • Effacer le stockage du navigateur réinitialise l’identité. C’est volontaire et correspond à l’attente du public : rien ne reste après l’événement.

Comme aucun email, numéro de téléphone ou compte n’est requis, le Gateway reste du côté sain du RGPD : les seules données collectées sont un id anonyme, le nickname optionnel et le contenu que le spectateur tape explicitement (une question, un vote). Le choix du siège n’est stocké que quand il est effectué.

Permissions et limites

Quelques règles tiennent la surface tranquille sous charge :

  • Rate-limit — un même spectator_id peut envoyer une question toutes les 10 secondes. Le formulaire se désactive entre deux envois.
  • Longueur de question — 280 caractères, imposée côté client et revérifiée à l’insert.
  • Un poll actif à la fois — le spectateur ne voit que le poll actuellement active. Les polls passés ne sont pas navigables depuis cette surface.
  • Pas d’édition, pas de suppression — une fois une question envoyée, le spectateur ne peut pas la réécrire. La modération se fait côté opérateur.
  • Aucun outil modérateur — approuver, pousser vers le Player ou tirer un gagnant de tombola se font dans le Studio. L’app spectateur n’expose rien de tout cela.

Branding

L’application spectateur hérite du look de la room à laquelle elle appartient. Le même thème qui anime l’en-tête du Studio et l’arrière-plan du Player s’applique ici :

  • Couleurs primaire et d’accent lues depuis le thème de la room.
  • Le logo de l’organisateur apparaît en haut de l’app quand il est défini sur le controller.
  • Dark mode par défaut ; le thème de la room peut l’outrepasser.
  • La langue suit la langue admin du controller, avec passage en RTL pour l’arabe.

L’objectif est qu’un spectateur sur /ask/<room> sente qu’il est dans le même événement que l’écran de scène, sans chrome Timers Studio qui détourne l’attention du show.

FAQ

Les spectateurs doivent-ils créer un compte ? Non. L’app spectateur n’a ni login, ni inscription, ni champ email. Un spectator_id anonyme est généré dans le navigateur à la première visite.

Quelles données le Gateway collecte-t-il ? Un spectator_id anonyme stocké dans localStorage, un nickname optionnel, plus ce que le spectateur envoie explicitement — un texte de question, un choix de siège, un vote. Pas d’email, pas de téléphone, pas de compte.

Ça marche sans app installée ? Oui. L’app spectateur est une page web. N’importe quel navigateur mobile ou desktop moderne l’ouvre directement depuis un QR code ou une URL courte. Rien à installer.

Peut-on empêcher les spectateurs de voir l’agenda ? Oui. L’organisateur peut basculer la visibilité de l’agenda depuis le Studio. Quand c’est désactivé, l’app spectateur se charge normalement ; seul l’onglet agenda est absent.

À lire ensuite