Formato de los bancos de preguntas
Guarda tu banco como un archivo .json en UTF-8. Cárgalo en la página principal: se lee en tu navegador y no se envía al servidor. Al recargar la página, debes volver a cargar los archivos personales.
{
"version": 1,
"title": "Mi banco de matemáticas",
"description": "Práctica de operaciones básicas",
"questions": [
{
"id": "suma-1",
"subject": "Matemáticas",
"question": "¿Cuánto es 2 + 2?",
"alternativesToShow": 3,
"alternatives": [
{ "id": "a", "text": "3" },
{ "id": "b", "text": "4" },
{ "id": "c", "text": "5" },
{ "id": "d", "text": "6" }
],
"correctAnswerId": "b",
"explanation": "Sumar dos unidades a dos unidades da cuatro."
}
]
}
Campos del banco
| Campo | Regla |
|---|---|
version | Obligatorio. Número 1. |
title | Obligatorio. Nombre del banco; hasta 200 caracteres. |
description | Opcional. Descripción no vacía; hasta 2.000 caracteres. |
tags | Opcional. Lista de hasta 20 etiquetas no vacías de hasta 50 caracteres, sin repetir ignorando mayúsculas y espacios externos. |
mathFormat | Opcional. "latex" o "typst". Notación predeterminada del banco; al omitirlo se usa LaTeX. |
questions | Obligatorio. Lista de 1 a 10.000 versiones de preguntas, incluidas las independientes. |
Campos de cada pregunta
| Campo | Regla |
|---|---|
id | Texto obligatorio y único dentro del banco; hasta 120 caracteres. |
subject | Materia opcional; hasta 200 caracteres. Si se omite, se agrupa en «Sin materia». |
mathFormat | Opcional. "latex" o "typst". Sobrescribe la notación del banco para esta pregunta, sus alternativas y explicación. Si se omite, hereda la del banco. |
variantGroup | Opcional. Nombre de grupo no vacío de hasta 120 caracteres. Las preguntas con el mismo grupo cuentan como una; se elige una variante por sesión. Sin el campo es independiente. |
question | Texto obligatorio; hasta 10.000 caracteres. |
alternatives | Entre 2 y 50 alternativas. Cada una tiene id (texto, hasta 120 caracteres, único en esa pregunta) y text (hasta 4.000 caracteres). |
alternativesToShow | Opcional. Entero entre 2 y el total de alternativas. Al omitirlo se muestran todas. |
correctAnswerId | Obligatorio. El id de la única alternativa correcta, no su posición. |
explanation | Explicación obligatoria; hasta 10.000 caracteres. Se muestra tanto al acertar como al equivocarse. |
El total se calcula contando alternatives; no añadas un campo de total. La alternativa correcta siempre se incluye, los distractores se seleccionan al azar y las opciones se mezclan. Las preguntas de una sesión no se repiten.
Los textos deben ser no vacíos. HTML y Markdown no se interpretan; las fórmulas LaTeX o Typst entre sus delimitadores sí se renderizan. No se aceptan campos adicionales. Usa comillas dobles, sin comentarios ni comas finales. Límite de 10 MB por archivo.
Crear preguntas sin escribir JSON
Pulsa Crear banco de preguntas en la página principal. Completa nombre, materia opcional, enunciado, alternativas, respuesta correcta y explicación. Guarda cada pregunta con Agregar pregunta; después puedes editarla o eliminarla. Elige Descargar JSON para conservar el banco o Practicar con este banco para usarlo en esta pestaña.
El botón Editar preguntas permite trabajar con un JSON cargado. Los ids nuevos se generan automáticamente. Los borradores son locales y se pierden al cerrar o recargar: descarga el archivo para conservarlos. El botón Guardar banco en el servidor, disponible con sesión admin, es una acción explícita que sí envía el banco y lo guarda de forma persistente.
Elige Notación matemática predeterminada para el banco. Cada pregunta permite Usar la del banco, LaTeX o Typst. La ayuda y la vista previa siguen esa selección. Cambiarla no convierte automáticamente las fórmulas escritas.
Variantes de una misma pregunta
Usa Crear variante en una pregunta guardada para copiarla y agruparla con la original. Modifica enunciado, alternativas y explicación y pulsa Agregar pregunta. También puedes editar preguntas existentes y poner el mismo nombre en Grupo de variantes. Vacío = pregunta independiente.
En JSON cada versión es una pregunta completa con su propio id único y el mismo variantGroup, por ejemplo "ecuacion-lineal". Los nombres de grupo distinguen mayúsculas y omiten espacios externos. Diez versiones del grupo A y una del B cuentan como dos preguntas, con igual probabilidad de selección por grupo. El test elige una versión al azar de cada grupo seleccionado, incluso si desactivas mezclar el orden. Repetir una sesión vuelve a sortear.
El filtro por materia se aplica antes de elegir variantes. Solo pueden aparecer versiones de las materias elegidas; un grupo presente en varias materias cuenta una vez en el total conjunto. Las versiones conservan sus propias respuestas, explicación y notación.
Escribir matemáticas con LaTeX
En enunciados, alternativas y explicaciones puedes usar \(x^2 + 1\) o $x^2 + 1$ para fórmulas dentro del texto. Para fórmulas centradas, usa \[\frac{a}{b}\] o $$\frac{a}{b}$$. Ejemplos: \sqrt{x}, \frac{1}{2}, \int_0^1 x\,dx.
En el editor escribe una sola barra invertida. La descarga escapa las barras automáticamente. Si escribes el JSON a mano, debes duplicarlas:
"question": "Calcula \\(\\frac{1}{2} + \\frac{1}{2}\\).",
"text": "\\(1\\)",
"explanation": "Sumamos numeradores: \\[\\frac{1+1}{2} = 1\\]."
Se usa KaTeX con archivos y fuentes de esta misma web; no hay CDN. Admite notación matemática, no documentos LaTeX completos. La sintaxis inválida se conserva como texto y el editor muestra un aviso. No se permiten comandos para insertar HTML, enlaces o imágenes. Para precios, escribe \$ o evita usar dos signos $ en el mismo texto.
Escribir matemáticas con Typst
Selecciona Typst en el editor o añade "mathFormat": "typst" al banco o a una pregunta. Usa $frac(1, 2) + sqrt(x)$ en línea; para centrar usa $ frac(a, b) $ (con espacios junto a ambos signos) o $$frac(a, b)$$. Otros ejemplos: $x_(n+1)$, $sum_(i=1)^n i$ y $mat(1, 0; 0, 1)$.
Se usa kern localmente para convertir notación matemática Typst a MathML. Se admiten fórmulas compatibles con esa biblioteca, sin ejecutar definiciones, imports, paquetes ni documentos completos. La apariencia depende de las fuentes y del navegador. Las fórmulas inválidas o demasiado anidadas permanecen como texto y la vista previa avisa. Puedes mezclar preguntas LaTeX y Typst en un mismo banco; los bancos antiguos siguen usando LaTeX.
Publicar bancos para todos
Usa Iniciar sesión en la cabecera de la página principal para acceder a los bancos privados de la biblioteca. La instalación utiliza una única cuenta, que también permite administrar bancos.
Después de entrar, abre Administrar bancos y sube el JSON, o crea un banco con el editor y guárdalo en el servidor. Define las etiquetas y la visibilidad: Público para todas las personas o Privado para acceso exclusivo de la cuenta configurada. No hace falta desplegar de nuevo para estos cambios.
La búsqueda funciona por nombre, etiquetas y materias, ignorando mayúsculas y acentos. El panel permite cambiar las etiquetas y la visibilidad, editar, eliminar y descargar bancos, además de una copia de seguridad de los bancos públicos y privados.
El servidor admite hasta 100 bancos. En CapRover, BANKS_DIR debe apuntar a una carpeta de un volumen persistente; se recomienda /data/banks con el volumen montado en /data. El usuario y la contraseña se configuran con ADMIN_USERNAME y ADMIN_PASSWORD. El README explica la configuración y la recuperación de copias de seguridad.
banks/ se usa solo para inicializar una instalación vacía una vez. La práctica, los archivos personales y el editor local siguen disponibles sin login y no suben datos automáticamente.
Descargar ejemplo LaTeX
Descargar ejemplo Typst, LaTeX y variantes
Descargar JSON Schema