Open Knowledge en marcha

2 · Modo de contenido estático3 min read

Una librería servida desde un repositorio público

En modo de contenido estático tu librería no tiene base de datos ni estado en el servidor. Todo lo que sirve vive como ficheros en un repositorio git público:

settings.json                          nombre y configuración de la librería
courses/index.json                     qué cursos existen y su orden
courses/<nombre>/course.json           un curso: metadatos, secciones, exámenes
courses/<nombre>/materials/*.md        un fichero Markdown por lección de texto
news/<nombre>.json + news/<nombre>.md  una noticia cada uno
pages/<nombre>.json + <nombre>.md      una página auxiliar cada una
media/                                 imágenes y archivos

A la instancia se le indica dónde vive ese repositorio — una única variable de entorno, OK_CONTENT_REPO, apuntando a la URL raw del repositorio — y simplemente lo renderiza, refrescando su caché aproximadamente cada minuto.

¿Por qué git, precisamente?

Porque un repositorio git es, discretamente, el mejor gestor de contenidos jamás construido, y ya sabes usarlo. Considera lo que obtienes sin instalar nada:

  • Publicar es un push. Editas un fichero Markdown, commit, push — tu librería se actualiza en un minuto. Sin despliegues, sin compilación, sin sesión de administración.
  • El historial es automático. Cada versión de cada lección, para siempre, con autoría y fechas. ¿Un estropicio? Reviertes el commit. ¿Quieres saber qué cambió en un curso desde primavera? git diff.
  • La revisión sale gratis. Un colega puede proponerte una corrección como pull request. Lees el diff, fusionas. Ese flujo le costó décadas de refinamiento a la ingeniería de software, y tu librería lo hereda entero.
  • El servidor es desechable. Sin estado no hay nada que respaldar, nada que migrar, nada que se pueda perder. Si el contenedor muere, arrancas otro; si la plataforma te decepciona, apuntas otra distinta al mismo repositorio. Tu librería no puede ser tomada como rehén.
  • Apertura radical, estructural. Tu contenido no está en una plataforma; ES un repositorio público. Cualquiera puede leer su historia, aprender de cómo está construida, o arrancar su propia librería a partir de una copia — lo cual, dada la tradición a la que pertenece este proyecto, es exactamente la gracia.

La forma del contenido

Una regla de diseño mantiene agradable el formato: el texto largo nunca vive dentro del JSON. Los descriptores JSON son pequeños y estructurales — títulos, orden, metadatos, definiciones de examen — mientras que cada lección es un fichero Markdown corriente, referenciado por nombre. La prosa se mantiene comparable, revisable y cómoda de escribir. La única excepción deliberada son las preguntas de examen, que van dentro de course.json: son estructura (opciones, respuestas correctas, explicaciones), no prosa.

Todo repositorio generado con el scaffolder incluye además un AGENTS.md que documenta el formato completo en detalle. Sirve a la vez de referencia para ti y de instrucciones para asistentes de programación con IA (Claude Code, Codex, OpenCode…), de modo que uno pueda ayudarte a redactar, estructurar y publicar tu material — tú pones el conocimiento y el criterio; el asistente se encarga del formato.

Lo que aquí no existe

En modo estático no hay cuentas de ningún tipo. Los visitantes estudian de forma anónima; su progreso vive en sus navegadores; los exámenes se corrigen al momento sin registrarse en ninguna parte. Registro, notificaciones, certificados y panel de administración sencillamente no existen — no desactivados: ausentes. Para muchas librerías eso no es una limitación sino una virtud: nada que asegurar, nada que filtrar, nada que mantener.

Esta misma librería funciona en modo estático. La página que estás leyendo es un fichero Markdown en un repositorio público, y si consultas el historial de ese repositorio puedes ver escribirse este mismo párrafo.