ADR 0001: Static documentation site publishing architecture¶
- Status: Accepted
- Date: 2026-08-30
- Context: The repository serves as a Git DevOps reference guide. Reading markdown files directly inside git repositories introduces friction for search, navigation, mobile reading, and quick operational lookup. A compiled static documentation website provides instant text search, categorized sidebar navigation, copyable code snippets, and high-performance global hosting.
Decision¶
We will publish the repository markdown files as a static documentation website using the following components:
- Static Site Generator: MkDocs with the Material theme (
mkdocs-material). - Python-based build tooling integrates cleanly with existing repository scripts.
- Built-in client-side WebWorker search indexes markdown files without requiring third-party search backends.
-
Native support for syntax highlighting, code copy buttons, tabbed content blocks, and collapsible navigation sections.
-
Hosting Platform: Cloudflare Pages.
- Provides low-latency global CDN edge delivery with TLS certificate provisioning.
-
Direct file upload support via Cloudflare Wrangler CLI.
-
CI/CD Pipeline: Forgejo Actions.
- A workflow in
.forgejo/workflows/publish.yamlruns on every push to themasterbranch. -
The workflow installs Python dependencies, compiles the static HTML artifact to
site/, and deploys to Cloudflare Pages vianpx wrangler pages deploy. -
Landing Page Strategy:
- The repository root
README.mdis mirrored intodocs/index.mdduring builds to maintain a single source of truth for both repository browsing and static site landing.
Consequences¶
Positive¶
- Developers and DevOps engineers get instant fuzzy search across all Git guides, recipes, and recovery runbooks.
- Zero server infrastructure maintenance on self-hosted machines.
- Clean separation between documentation authoring in markdown and production static asset generation.
Negative¶
- Cloudflare API tokens (
CLOUDFLARE_API_TOKENandCLOUDFLARE_ACCOUNT_ID) must be stored as Forgejo repository secrets. - Build runners require Python and Node.js execution environments.