App Next.js con 5 juegos (CIDI, AMI, HMP, CEO, LUM) y un backoffice de monitoreo en tiempo real para ver en qué vista está trabajando cada grupo.
El monitoreo corre en una sola máquina (el host del evento), sin base de datos ni internet: el estado de los grupos vive en memoria del proceso.
- Cada grupo, al navegar entre juegos, reporta su ubicación (heartbeat cada 5s).
- El panel
/adminconsulta el estado cada 2s y lo muestra agrupado por juego, con foto del equipo, tiempo en sala y orden/filtros. - Si un grupo cierra la pestaña o se desconecta, desaparece del panel (al instante por aviso de cierre, o a más tardar en ~15s por vencimiento).
-
Instalar dependencias (una sola vez):
npm install
-
Compilar y arrancar (build de producción, recomendado para el evento):
npm run build npm run start:lan # expone el server en la red local (0.0.0.0:3000)Para desarrollo/pruebas:
npm run dev:lan. -
Grupos (tablets/celulares/PCs en la misma red): entran a
http://<IP-DEL-HOST>:3000(la IP local del host; en Windows:ipconfig→ "Dirección IPv4"). -
Administrador:
http://localhost:3000/adminen la misma máquina, ohttp://<IP-DEL-HOST>:3000/admindesde otra.
Firewall (Windows): la primera vez, permitir el acceso de Node en redes privadas para que los dispositivos de la LAN puedan conectarse al puerto 3000.
El panel se protege con una clave para que los alumnos no vean el monitoreo:
- Copiar
.env.examplea.env.localy completarADMIN_KEYcon una clave difícil. Next carga.env.localautomáticamente tanto endevcomo enstart(no se commitea). - Abrir el panel una vez con
http://<host>:3000/admin?key=TU_CLAVE. La clave queda recordada en ese navegador (localStorage), así que después alcanza con entrar a/admin. También se puede tipear en la pantalla de acceso si aparece.
Si se deja ADMIN_KEY vacío, el panel queda abierto (sin clave).
HEARTBEAT_INTERVAL_MS(5s) — cada cuánto cada grupo reporta.PRESENCE_TTL_MS(15s) — cuánto tarda en limpiarse un grupo sin heartbeat.