/es/ninja-slideshow

Caso · Código abierto

NINJA Slideshow

Un sistema de señalización digital con gestión de contenido en tiempo real que reproduce imágenes y videos en bucle en navegadores, Raspberry Pi, Android TV y smart TVs LG y Samsung.

  • Socket.IO
  • Flutter
  • Raspberry Pi
  • webOS
  • Tizen
Ver en GitHub

MoscoDJ/NINJA-Slideshow

Vestíbulo moderno con varias pantallas de señalización digital, verticales y horizontales, que muestran la misma imagen sincronizada.

01 / NINJA Slideshow

El problema

Varias pantallas de distintas marcas y sistemas, repartidas en diferentes áreas, tienen que mostrar el mismo contenido actualizado sin que nadie pase a cargarlo una por una. Además, las pantallas quedan encendidas sin supervisión, así que cualquier falla de memoria, de red o de despliegue termina en una pantalla negra.

02 / NINJA Slideshow

La solución

Un sistema de slideshow digital con panel de administración: se suben imágenes y videos, se ordenan con drag & drop y todas las pantallas los reproducen en bucle infinito. Cada cambio llega al instante a todos los clientes por Socket.IO.

Funciona en cualquier navegador moderno, en Raspberry Pi (Chromium en modo kiosco), en Android TV y Google TV (app en Flutter), en LG (app webOS) y en Samsung (app Tizen).

03 / NINJA Slideshow

Cómo funciona

Subidas directas al almacenamiento

Los archivos van del navegador a DigitalOcean Spaces con URLs prefirmadas; los de 100 MB o más se suben en partes en paralelo, hasta 2 GB, con barra de progreso y opción de cancelar. El servidor nunca carga el archivo en memoria.

Tiempo real

Después de cada subida, borrado o cambio de orden, el servidor avisa a todos los clientes y estos refrescan su lista.

Despliegue automatizado

Scripts que encuentran las pantallas en la red, instalan la versión más reciente en todas (LG, Samsung y Android TV, cada una con su herramienta), las encienden por Wake-on-LAN y las apagan al final del día, programados con cron. Un despliegue solo se reporta como exitoso si de verdad se instaló.

04 / NINJA Slideshow

Seguridad

  • Autenticación del panel con cookies firmadas (HMAC-SHA256), sin sesiones en el servidor, para funcionar con varias instancias.
  • Comparaciones en tiempo constante, límite de intentos de inicio de sesión y de escrituras, y CORS por ruta.
  • Content-Security-Policy estricta en producción y validación de nombres de archivo contra una lista permitida.
  • El servidor no arranca si falta un secreto o si es demasiado corto.

05 / NINJA Slideshow

Confiabilidad documentada

El repositorio documenta cómo se diagnosticaron y corrigieron fallas reales en Android TV: una fuga de memoria con video, descargas a medias en la caché que cortaban los videos, y una pantalla que se apagaba sola cada 10 minutos. Cada corrección quedó en una versión del cliente.

06 / NINJA Slideshow

Detalles técnicos

Componente Tecnología
Backend Express y Socket.IO, en TypeScript
Panel web React, Vite, Tailwind y shadcn
Almacenamiento DigitalOcean Spaces (compatible con S3)
Cliente Raspberry Pi y Android TV Flutter
Clientes LG y Samsung Apps web para webOS y Tizen

07 / NINJA Slideshow

Estado

Código público en GitHub: MoscoDJ/NINJA-Slideshow.

08 / NINJA Slideshow

Hablemos de tu proyecto

¿Tienes un proyecto, una integración o un evento que necesita tecnología?

Envía una consulta