尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗R2 Quiz es una versión light y personal de Kahoot orientada a aulas, reuniones y actividades con logística simple. La interfaz busca ser elegante, legible y rápida, con foco en una experiencia de trivia en vivo que no dependa de un backend grande.
preguntas.json — banco de preguntas.host.html — pantalla del anfitrión.player.html — pantalla del jugador.estilos.css — identidad visual, responsive y refinamiento del UI.api/ably-key.js — endpoint de lectura de entorno para acceder a la API key de Ably.ABLY_API_KEY.Si el host cancela la sala, arranca una ronda nueva o cierra la pestaña, la partida termina para todos:
host-<código> y publica un único mensaje sala-cerrada.sala-cerrada o la salida del host de la presencia (Ably la emite al cerrar la pestaña).La referencia visual del usuario sugiere un leaderboard con una estructura de ranking y un cierre con podio al final. La idea es usar una composición clara, con barras de clasificación, badges de posición, avatar emoji y una estética digital premium.
ABLY_API_KEY en Vercel./host.html y /player.html como rutas de acceso..claude/settings.json: al final de cada turno de Claude Code se ejecuta ~/.claude/hooks/auto-commit.js, que hace git add -A, commitea con un mensaje chore: auto-commit — <archivos> y hace git push al remoto de GitHub..env está en .gitignore y ABLY_API_KEY vive solo en Vercel.El host no lee preguntas.json directamente: primero carga el catálogo concursos.json, y cada entrada del catálogo apunta a su propio archivo de preguntas. Para publicar un cuestionario nuevo:
Crear el archivo de preguntas (por ejemplo preguntas-mi-tema.json) en la raíz del repo, con esta forma:
{
"titulo": "Nombre del cuestionario",
"preguntas": [
{
"pregunta": "¿Texto de la pregunta?",
"opciones": ["Opción A", "Opción B", "Opción C", "Opción D"],
"correcta": 0,
"tiempo": 15,
"explicacion": "Texto que se muestra al revelar la respuesta correcta."
}
]
}
correcta: índice de la opción correcta en el arreglo opciones, empieza en 0.opciones: no hay límite fijo de cantidad; lo habitual son 4.tiempo: segundos para responder. Si se omite, el host usa 15 por defecto.explicacion: opcional. Si falta o va vacía, el host genera un texto de respaldo automático con la opción correcta.Registrar el cuestionario en concursos.json, agregando un objeto al arreglo concursos:
{
"id": "mi-tema",
"titulo": "Nombre visible en el catálogo",
"categoriaId": "pruebas",
"descripcion": "Descripción corta que ve el host antes de abrir la sala.",
"recomendado": "Cuándo conviene usar este cuestionario (opcional).",
"archivo": "preguntas-mi-tema.json"
}
id: identificador único del concurso dentro del catálogo.categoriaId: debe coincidir con un id de concursos.categorias. Si no coincide con ninguno, el concurso aparece igual, agrupado bajo "Sin categoría".archivo: ruta relativa al JSON de preguntas creado en el paso 1.recomendado: opcional; si se omite, esa línea no se muestra en la ficha del concurso.(Opcional) Declarar una categoría nueva agregando un objeto a concursos.categorias:
{ "id": "mi-categoria", "nombre": "Nombre del filtro", "descripcion": "Texto de apoyo del grupo." }
Verificar en host.html: recargar la pantalla de catálogo (login de host) y confirmar que la tarjeta nueva aparece, abre su ficha con el conteo correcto de preguntas y permite presentar la sala.
No hace falta tocar host.html, player.html ni estilos.css para sumar un cuestionario: todo pasa por los dos archivos JSON de arriba.