ADR-0018 — Docusaurus 3.x for the engineering bible
- Status: Accepted
- Date: 2026-05-08
- Decision-makers: Tom Anderson
Context
The engineering bible needs:
- Markdown/MDX-based content (everything reviewable in git)
- Sidebar navigation across many docs
- Mermaid diagram rendering (ADR-0017)
- Full-text search
- Custom branding (Kvick navy + orange)
- Easy Cloudflare Pages deployment
- A categories/section navigation pattern that scales to ~100 docs
Alternatives:
- Docusaurus 3.x — Meta-maintained, React-based, mature plugin ecosystem, MDX-native, good for technical docs
- MkDocs Material — Python-based, lighter, but less React/MDX integration
- VitePress — Vue-based, lightweight, good for technical docs
- Mintlify — hosted SaaS, beautiful but vendor lock-in and recurring cost
- Static site generator + handrolled — too much work
Docusaurus is the boring choice here (boring tech) — long track record, vast plugin ecosystem, well-documented.
Decision
Use Docusaurus 3.x. Specifically:
- TypeScript template (
npx create-docusaurus@latest docs-site classic --typescript) @docusaurus/theme-mermaidfor diagrams@easyops-cn/docusaurus-search-localfor offline-friendly search (no Algolia)- Custom CSS (
src/css/custom.css) for Kvick branding (DM Serif Display headings, JetBrains Mono code, navy/orange palette) routeBasePath: '/'— docs at the root, no blog- Deploy via Cloudflare Pages
static/CNAMEset tobible.kvick.bike- Cloudflare Access gates the deployed bible site (auth required for Kvick employees + invited shop owners)
Consequences
Positive:
- Mature framework; problems have Stack Overflow answers
- MDX lets us mix Mermaid + React components + Markdown freely
- Cloudflare Pages's Docusaurus integration is one-click
- Local search beats external Algolia for a private docs site (no external indexing)
- Sidebar generation from filesystem structure is automatic
Negative:
- A React-based framework runtime for a docs site — heavier than a true static site generator
- Docusaurus version upgrades occasionally break theming
- The build step takes ~30 seconds; not instant
Mitigations:
- The built output is static HTML/CSS/JS; the runtime is what's heavy, not what's served
- Pin to a Docusaurus minor version; upgrade deliberately
- Build time is fine for a docs site that updates a few times a day
Notes
The bible repo is separate from the Helm app repo. Deploy is automatic on push to main via Cloudflare Pages's GitHub integration.