App del espectador (superficie pública del Gateway)
Referencia de la app del espectador de Timers Studio: lo que ve el público en /ask/<room>, la gestión de identidad sin login, los permisos y la herencia del branding de la sala.
Última actualización
App del espectador (superficie pública del Gateway)
La app del espectador es la cara pública del módulo Gateway. Es lo que realmente ve una persona del público cuando abre una sala Timers Studio en su móvil: una página ligera, sin login, servida en timers.studio/ask/<room>. El resto de la plataforma — Studio, Moderator, Player — queda oculto. Esta superficie es deliberadamente estrecha.
Un espectador llega aquí de dos formas. O bien escanea un código QR mostrado en el escenario, en una diapositiva o en el programa del evento, o teclea una URL corta que ha repartido el organizador. En ambos casos el camino es el mismo: /ask/<room> resuelve la sala contra la tabla controllers y carga la UI pública. Sin lobby, sin creación de cuenta, sin pedir correo.
Lo que ve un espectador
La app es mobile-first, pensada para el dedo, con tema oscuro por defecto. Desde que carga, un espectador puede acceder a:
- Enviar una pregunta — un formulario de 280 caracteres que escribe en
spatial_questions. Un selector de asiento opcional (SeatSelector) adjunta unavector_positiony unzone_idpara que el director sepa de dónde viene la pregunta. - Votar en un poll en vivo —
SpectatorPollVotesube desde abajo en cuanto el director abre un poll. Tiene prioridad sobre el formulario hasta que se vota o se cierra el poll. - Agenda — vista en sólo lectura del orden del día, visible cuando el organizador la deja activada. Refleja los mismos datos editados en el módulo Agenda.
- Insignia live — un pequeño indicador conectado a
controllers.timer_stateque pasa a LIVE mientras hay un timer corriendo en escena. - Pantalla de éxito — tras enviar una pregunta, una confirmación con un botón reset para que el mismo dispositivo pueda enviar otra.
Las pestañas siguen suscritas en segundo plano. Cuando el director abre un poll, el espectador no tiene que refrescar; la hoja de voto aparece sola.
Identidad y privacidad
La app del espectador nunca pide contraseña. La identidad vive en un spectator_id guardado en el navegador, no en una sesión del servidor.
- En la primera visita, la app genera un
spectator_idy lo almacena enlocalStorage(clave por sala, por ejemplofp_<room>). - Se inserta una fila en
spectatorscon ese id, elroom_idy unnicknameopcional. - Volver desde el mismo dispositivo reutiliza el mismo
spectator_id, así los contadores del operador no cuentan dos veces a alguien que reabre la página. - Borrar el almacenamiento del navegador reinicia la identidad. Es intencional y encaja con la expectativa del público: nada queda después del evento.
Como no se pide correo, teléfono ni cuenta, el Gateway se mantiene del lado sano del RGPD: los únicos datos recogidos son un id anónimo, el nickname opcional y lo que el espectador teclea explícitamente (una pregunta, un voto). El asiento sólo se guarda si se elige.
Permisos y límites
Unas pocas reglas mantienen la superficie tranquila bajo carga:
- Rate-limit — un mismo
spectator_idpuede enviar una pregunta cada 10 segundos. El formulario se desactiva entre envíos. - Longitud de pregunta — 280 caracteres, impuesta en cliente y revalidada en el insert.
- Un poll activo a la vez — el espectador sólo ve el poll con estado
active. Los polls pasados no son navegables desde esta superficie. - Sin edición, sin borrado — una vez enviada una pregunta, el espectador no puede reescribirla. La moderación ocurre en el lado operador.
- Sin herramientas de moderador — aprobar, empujar al Player o sortear un ganador de tómbola se hace en el Studio. La app del espectador no expone nada de eso.
Branding
La app del espectador hereda el aspecto de la sala a la que pertenece. El mismo tema que mueve la cabecera del Studio y el fondo del Player se aplica aquí:
- Colores primario y de acento leídos del tema de la sala.
- El logo del organizador aparece arriba de la app cuando está definido en el controller.
- Modo oscuro por defecto; el tema de la sala puede sobreescribirlo.
- El idioma sigue el idioma admin del controller, con paso a RTL para el árabe.
El objetivo es que un espectador en /ask/<room> sienta que está en el mismo evento que la pantalla de escenario, sin cromado Timers Studio que desvíe la atención del show.
FAQ
¿Los espectadores deben crear una cuenta?
No. La app del espectador no tiene login, ni registro, ni campo de correo. Se genera un spectator_id anónimo en el navegador en la primera visita.
¿Qué datos recoge el Gateway?
Un spectator_id anónimo en localStorage, un nickname opcional y lo que el espectador envía explícitamente — texto de pregunta, elección de asiento, voto. Sin correo, sin teléfono, sin cuenta.
¿Funciona sin instalar una app? Sí. La app del espectador es una página web. Cualquier navegador móvil o de escritorio moderno la abre desde un QR o una URL corta. No hay nada que instalar.
¿Se puede impedir que los espectadores vean la agenda? Sí. El organizador puede conmutar la visibilidad de la agenda desde el Studio. Cuando está desactivada, la app del espectador carga con normalidad; sólo falta la pestaña agenda.
Para seguir leyendo
- Visión general del módulo Gateway — cómo encajan la app del espectador y el espacio operador.
- Abrir el Access Gateway — el lado operador que lee lo que envían los espectadores.
- Votar en un poll en vivo (vista espectador) — enfoque sobre el flujo de voto.