Skip to content

Repository files navigation

⚠️ Aviso / Notice

🇪🇸 Español — Este repositorio no es open source. Si su trabajo toma elementos notoriamente derivados de este proyecto, se requiere atribución expresa y visible a Crafter Station. El incumplimiento podrá dar lugar a la suspensión del acceso y a un señalamiento público por parte de la organización. Consulte la LICENCIA antes de copiar, forkear o desplegar cualquier parte de este código.

🇬🇧 English — This repository is not open source. If your work takes elements notoriously derived from this project, express and visible attribution to Crafter Station is required. Failure to comply may result in revoked access and a public statement from the organization. Review the LICENSE before copying, forking or deploying any part of this code.

Crafter Station@crafter-station · crafterstation.com


Bingo de Networking — The Next Craft

Rompehielos de 5 minutos para el arranque de la hackathon. Cada participante abre su tarjeta 5×5, camina por la sala y firma casillas con el nombre de la gente que cumple cada condición. Está pensado sobre todo para quien llega solo y todavía no tiene equipo.

Mismo lenguaje visual que the-next-craft: monitor monocromo B&N, tipografía pixel PETSCII (Silkscreen) para titulares y labels, IBM Plex Mono para todo lo demás, script Borel para el wordmark, keycaps de marfil como CTAs y scanlines dentro de las "pantallas".

Cómo se juega

  1. Escribes tu nombre y presionas RUN BINGO. El reloj arranca en ese momento.
  2. Tocas una casilla: se abre el enunciado completo y una repregunta para que la conversación no se muera en el checkbox.
  3. Escribes el nombre de quien la cumple — ese nombre es la firma.
  4. A los 5 minutos la tarjeta se cierra sola. Gana quien tenga más casillas.

Reglas que están implementadas tal cual:

  • Una persona puede cubrir varias casillas. No se bloquea, pero el marcador lleva la cuenta aparte de personas distintas, que es la métrica que de verdad mide el networking (y la que se muestra en el resumen final).
  • Meta = cantidad de casillas en 5 minutos. Las líneas de 5 se detectan y se celebran (12 líneas posibles: 5 filas, 5 columnas, 2 diagonales), pero son un hito, no el criterio de victoria.
  • 25 prompts distintos por tarjeta, elegidos de un pool de 48 con un RNG sembrado: dos personas paradas juntas casi nunca reciben la misma cuadrícula.

Sonido

Todo suena a Commodore: ondas cuadradas cortas generadas con Web Audio en src/lib/sfx.ts, sin un solo archivo de audio. Un listener delegado hace que cualquier botón suene a tecla al pulsarse (pointerdown, para que el sonido llegue con el dedo y no después), y encima van las voces con significado: firmar una casilla sube dos notas, borrarla las baja, una línea de 5 dispara un arpegio y el 00:00 cierra con cuatro notas descendentes. El AudioContext nace en el primer click, que es lo único que aceptan los navegadores.

La música de fondo (public/BGM.mp3, loop de ~46s) acompaña solo la ronda: entra con el mismo click de RUN BINGO — los navegadores no dejan sonar audio sin un gesto previo — y se va en fade a los 5 minutos para dejarle la sala al jingle de cierre y a los resultados. Se precarga desde la pantalla de inicio y se pausa sola si el teléfono se guarda en el bolsillo (visibilitychange).

Todo, música y efectos, se apaga desde el SONIDO ON/OFF de la barra superior; la preferencia queda guardada en el dispositivo.

En el teléfono

Se juega caminando, con una mano y sin mirar mucho la pantalla, así que la versión móvil no es el desktop encogido:

  • La tarjeta va de borde a borde y cada casilla es un poco más alta que ancha: más espacio para la etiqueta donde sobra alto y falta ancho.
  • Debajo de 640px la casilla muestra solo la etiqueta PETSCII; el enunciado completo y la repregunta viven en el diálogo que se abre al tocarla.
  • Ese diálogo es una hoja anclada abajo, al alcance del pulgar, con los botones a todo el ancho y respetando la barra de gestos. Desde 640px vuelve a ser un modal centrado.
  • HUD en dos filas compactas (reloj + terminar, marcador a lo ancho) para no robarle pantalla a la tarjeta.
  • Inputs a 16px (iOS no hace zoom al enfocar), interactiveWidget: resizes-content para que el teclado no tape el campo, targets de 44px, vibración corta al marcar y sin rebote elástico al scrollear.

Desarrollo

bun install
bun run dev      # http://localhost:3000
bun run lint     # biome
bun run build

Sin base de datos ni backend: la partida vive en localStorage y el reloj se calcula contra un timestamp absoluto (endsAt), así que bloquear el teléfono o recargar en medio de la ronda no pierde la tarjeta ni regala segundos.

Deploy

Vive en https://bingo.thenextcraft.crafter.run — VPS de Crafter Station (Dokploy), desplegado como stack docker-compose desde main.

docker compose up --build   # local, en http://localhost:3000

La imagen es multi-stage: bun install + bun run build con output: "standalone", y el runtime es un node:22-alpine que solo lleva server.js y los estáticos. HOSTNAME=0.0.0.0 no es opcional: sin eso el server escucha en 127.0.0.1 dentro del contenedor y Traefik responde 404.

Cada push a main se redespliega con vps compose redeploy <composeId>.

Editar los prompts

Todo está en src/lib/prompts.ts. Cada entrada tiene:

Campo Para qué sirve
short Etiqueta PETSCII de la casilla (2–3 palabras). Es lo único legible en móvil.
text El enunciado, se lee después de "encuentra a alguien que…".
spark La repregunta que aparece al marcar, para estirar la conversación.

La regla al agregar prompts: tienen que abrir conversación. "Que use TypeScript" se resuelve con un sí o un no; "que haya roto producción" obliga a contar la historia.

Estructura

src/app/globals.css          paleta y utilidades C64 (keycap, scanlines, grid)
src/lib/prompts.ts           el pool de 48 prompts
src/lib/game.ts              tarjeta, líneas, estadísticas, reloj
src/lib/use-bingo-game.ts    estado + persistencia + cierre por tiempo
src/components/bingo/        start screen, HUD, tarjeta, diálogo, resultados

License

Proprietary — All Rights Reserved. See LICENSE.

This repo is not open source. Copying, forking, modifying, redistributing, deploying, or using it for commercial or non-commercial purposes is not allowed without prior written permission from Crafter Station (hello@crafterstation.com). Third-party material keeps its own license.

Este repo no es open source. Copiar, forkear, modificar, redistribuir, desplegar o usarlo con fines comerciales o no comerciales no está permitido sin permiso previo y por escrito de Crafter Station (hello@crafterstation.com). El material de terceros conserva su propia licencia.

About

Bingo de networking de 5 minutos para The Next Craft

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages