Community
Help grow free, open textbooks. Most contributions add curriculum data (what exists on the catalog) or publish a live chapter (readable lesson pages). This guide matches the repo’s CONTRIBUTING.md.
data/{subject}-curriculum.json → catalog + graph (status, curriculums, edges)
content/{subject}/{slug}/ → live page (one folder)
_index.md, core.html, supplement.html, assets/, widgets/
?view=tree) — Mermaid map with strand columns; live chapters link from the title only (→ + hover underline).description (1–2 sentences; map clamps to three lines).Use this when the lesson is not written yet but should appear in the catalog roadmap.
data/{subject}-curriculum.json (e.g. data/math-curriculum.json).{
"slug": "your-chapter-slug",
"title": "Human-readable title",
"description": "One or two sentences for list and map cards.",
"status": "planned",
"curriculums": ["DSE"],
"tier": "non-foundation"
}
tier is optional — omit for foundation topics; non-foundation shows an Extension badge.
Use kebab-case slugs. No content/ files needed for planned chapters.
A live chapter needs a catalog JSON entry and a folder under content/{subject}/{slug}/.
Set "status": "live" in data/{subject}-curriculum.json with description and curriculums.
Add _index.md, core.html, optional supplement.html, assets/, widgets/*.tsx. Copy content/math/quadratic-equations/.
bun run build:js syncs HTML and bundles widgets — no theme or main.tsx edits.
Prerequisites are required edges in graph.edges. Strand chapters[] order is for the list only — it does not create arrows.
from / to are chapter slugs (any strand)."graph": {
"edges": [
{ "from": "quadratic-equations", "to": "sequences-series" },
{ "from": "quadratic-equations", "to": "functions-graphs" },
{ "from": "functions-graphs", "to": "linear-programming" },
{ "from": "sequences-series", "to": "linear-programming" }
]
}
Verify at catalog map. Mermaid supports pan and zoom.
Keep PRs focused. Describe subject, chapters, live vs planned, and curricula. Questions welcome on GitHub.