尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Web app de partidas sociales de deducción con varias temáticas (La Aldea Maldita y Alien), inspirada en el clásico juego de los hombres lobo. Cada jugador usa su móvil: recibe su rol en secreto, actúa de noche cuando le toca y vota de día. Quien crea la sala también juega, pasa los turnos y su móvil hace de narrador. El sonido viene activado en su móvil y desactivado en el de los demás, que pueden activarlo para oír también la narración en cada fase.
Funciona solo con servicios gratuitos: Astro + React + Tailwind en Vercel (plan Hobby) y Supabase (plan Free). El diseño y las reglas confirmadas están en docs/arquitectura.md.
En el modo clásico hacen falta al menos 6 jugadores. En la portada hay un enlace a la ayuda con las reglas y la ficha de cada rol.
localStorage. No se muestra nunca en la interfaz.iniciar_partida, solo el creador). La tabla
roles_privados tiene RLS y ningún acceso para anon; obtener_mi_rol devuelve solo el
rol de quien llama (y sus compañeros si es malo). Los roles nunca se envían por Broadcast
ni por Presence ni en los datos generales de la sala.anon no puede leerlas
ni escribirlas. Todo pasa por funciones SECURITY DEFINER que comprueban el token. Por eso
el asesor de Supabase avisa de que anon puede ejecutar esas funciones: es intencionado.anon o publishable) de Supabase,
nunca la service role. El archivo .env está en .gitignore: no lo subas nunca.Crea un proyecto gratuito en Supabase.
En SQL Editor, ejecuta en orden los archivos de supabase/migrations:
20261025000000_esquema_inicial.sql20261025010000_avanzar_fase.sql20261025020000_noche_dia.sql20261025030000_lobos_acuerdo.sql20261029000000_cancelar_sala.sql20261029010000_historial.sql20261029020000_reacciones_y_tiempos.sql20261101000000_volver_a_jugar.sql20261101010000_avanzar_noche.sql20261101020000_lobos_legendarios.sql20261101030000_aldeanos_legendarios.sql20261101040000_salvador_y_comediante.sqlCon la CLI de Supabase también puedes hacer
supabase link y supabase db push.
En Project Settings → API copia la URL del proyecto y la clave pública (anon o
publishable). No hace falta configurar Realtime: los canales públicos vienen activados.
Importa el repositorio en Vercel. Detecta Astro solo; no cambies los comandos de build.
En Settings → Environment Variables añade:
| Variable | Valor |
|---|---|
PUBLIC_SUPABASE_URL | URL del proyecto de Supabase |
PUBLIC_SUPABASE_ANON_KEY | Clave pública (anon o publishable) |
Si conectas el proyecto con la integración de Supabase de Vercel no hace falta crearlas: la
app también lee las que crea la integración (NEXT_PUBLIC_SUPABASE_URL,
NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_ANON_KEY, etc.).
No definas PUBLIC_MODO_PRUEBAS en producción.
Despliega. Cada cambio en main se publica solo y cada pull request tiene su propia
preview.
Para probar con menos de 6 móviles, define PUBLIC_MODO_PRUEBAS=true (en .env o solo en
el entorno Preview de Vercel). Así el modo clásico permite empezar con 2 jugadores, con 1
malo y hasta 2 roles especiales. Si no se define, la app exige el mínimo normal.
npm install
cp .env.example .env # y rellena la URL y la clave pública
npm run dev # http://localhost:4321
Crea una sala y abre el enlace en otras pestañas o móviles de la misma red. La cámara solo
funciona en localhost o con HTTPS.
npm run typecheck
npm test # motor, temáticas, narración y tiempo real
npm run build
scripts/test-vercel-function.sh # la función de Vercel arranca sin el node_modules del proyecto
Las migraciones y sus tests SQL se prueban en un Postgres local vacío:
createdb lobos_test
DATABASE_URL="postgresql://localhost/lobos_test" scripts/test-sql.sh
GitHub Actions ejecuta todo esto en cada pull request.
| Carpeta | Contenido |
|---|---|
src/lib/game | Motor de la partida (composición, Ladrón, narración), sin UI |
src/lib/tematicas | Temáticas en JSON: roles, textos y audios |
src/lib/realtime | Cliente de Supabase, RPC, canal de la sala y token |
src/components | Islas de React: crear sala, sala de espera, partida, noche, ayuda |
supabase/migrations | Esquema, funciones RPC y tests SQL (supabase/tests) |
public/audio/{tematica} | Narración en MP3 (ElevenLabs). Si falta un audio, se usa la voz del navegador |
public/avatares | Avatares de rol (licencias) |
Los textos y los nombres exactos de los MP3 están en src/lib/tematicas/{tematica}.json
(campo audio). Copia cada MP3 a public/audio/{tematica}/ con ese nombre. Hoy están los de
La Aldea Maldita; Alien usa la voz del navegador hasta que se añadan los suyos.