This repository IS the library: an Open Knowledge
instance in static content mode reads everything it serves from here.
Editing these files and pushing is publishing — no build, no deploy, no
database. AGENTS.md documents every format in detail, and doubles as
instructions for AI coding assistants (Claude Code, Codex, OpenCode…), so
one can assist you in drafting, structuring and publishing your material
directly in this repository.
-
Push this folder to a public GitHub repository (the scaffolder already ran
git initand made the first commit):git remote add origin git@github.com:<user>/<repo>.git git push -u origin main
-
Deploy the Open Knowledge app (once) with the environment variable
OK_CONTENT_REPOpointing at this repository's raw URL:https://raw.githubusercontent.com/<user>/<repo>/main -
Edit, commit, push to publish content from now on. Changes appear within a minute.
The app is stateless in this mode, so a serverless platform works. Click:
…and when asked, set OK_CONTENT_REPO to your raw URL from step 2.
git clone https://github.com/oegea/open-knowledge.git && cd open-knowledge
docker build -t open-knowledge .
docker run -d --name open-knowledge --restart unless-stopped -p 3000:3000 \
-e OK_CONTENT_REPO=https://raw.githubusercontent.com/<user>/<repo>/main \
open-knowledgeThe same image runs on Railway, Render, Fly.io and friends. No volume is needed — the container is stateless and disposable.
One file per thing; long-form text lives in Markdown, never inside JSON:
| Path | What it is |
|---|---|
settings.json |
Library name, hero texts, logos, news toggle |
courses/index.json |
Course directory names, in catalog order |
courses/<name>/course.json |
One course: metadata, sections, materials, exams |
courses/<name>/materials/*.md |
One Markdown file per text lesson |
categories/<name>.json |
Optional card image per category, listed in categories/index.json |
news/<name>.json + .md |
One news post each, listed in news/index.json |
pages/<name>.json + .md |
One auxiliary page each, listed in pages/index.json |
media/ |
Images and files, referenced as media/<file> |
In this mode there are no accounts: visitors study anonymously and their progress lives in their own browser.