尚未偵測到更新。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.