01 — Architecture Assessment
Stack at a glance
Section titled “Stack at a glance”| Layer | Choice | Why |
|---|---|---|
| Static site generator | MkDocs Material | Markdown-native, near-zero ceremony, built-in client-side search, mature theme. Astro Starlight was the runner-up but adds JS framework complexity for no win on this content. |
| Hosting | Cloudflare Pages | Free, fast, Git-driven, integrates natively with Cloudflare Access. Already part of the Admin Dashboard architecture. |
| Auth | Cloudflare Access (existing IdP) | Adventive already uses Access for operator surfaces. Same identity, same policy model, same admin pane. |
| Source | Private GitHub repo | Same workflow as everything else; engineering edits via PR. |
| CI | GitHub Actions → Cloudflare Pages | Pages auto-deploys from the repo; no separate Action strictly needed, but a build-validation Action gives clean PR feedback. |
| Observability | Cloudflare Pages analytics + New Relic Browser (optional) | Pages analytics is free and usually sufficient. Add New Relic Browser only if engagement metrics matter to a stakeholder. |
Why MkDocs Material specifically
Section titled “Why MkDocs Material specifically”- The content is plain Markdown with tables, code fences, and the occasional callout — exactly what MkDocs Material renders well.
- Search is built in (Lunr.js, client-side, no server). No Algolia account needed.
- Theme matches our visual idiom: clean sans-serif, accent color, three-pane layout (left nav, center content, right TOC).
- Admonitions (
!!! note,!!! warning) map cleanly onto the WeasyPrint callout style we already use. - Plugin ecosystem is mature:
mkdocs-awesome-pages-pluginfor nav,mkdocs-pdf-export-pluginif we ever want a “download as PDF” link,mkdocs-git-revision-date-localized-pluginfor “last updated” stamps.
Repo layout (locked — see decisions/2026-04-27-repo-this-folder-becomes-source.md, amended 2026-04-27)
Section titled “Repo layout (locked — see decisions/2026-04-27-repo-this-folder-becomes-source.md, amended 2026-04-27)”The Adventive Engineering/ folder IS the docs repo. Build/config files live at the repo root; all authored content lives under a single docs/ subdirectory (mkdocs.yml’s docs_dir: docs). The amendment was needed because MkDocs 1.6 forbids docs_dir: ..
Adventive Engineering/ ← git repo: adventive/adventive-engineering-docs├── mkdocs.yml # docs_dir: docs├── requirements.txt # mkdocs-material + plugins (pinned; pygments<2.20)├── .gitignore├── README.md # Thin GitHub-browser README├── .github/│ └── workflows/│ └── build.yml # PR validation (mkdocs build --strict)├── overrides/ # Material theme partial overrides│ └── partials/copyright.html└── docs/ # ← docs_dir ├── README.md # Site landing page ├── assets/extra.css # Adventive theme CSS (must live inside docs_dir) ├── projects/ │ └── .pages # Explicit nav order ├── platform/ │ ├── .pages │ └── cloudflare/.pages ├── _templates/ # Excluded from rendered site ├── _shared/ # Excluded from rendered site ├── _archive/ # Excluded from rendered site └── _proposed/ # Excluded from rendered sitePDFs and the source Markdown are committed alongside each other. mkdocs.yml’s docs_dir: docs points at the content root, and exclude_docs: removes the underscore-prefixed folders and the per-project code/, inputs/, handoff/, connector-rewrite/, and worker-stub/ subfolders from the rendered site.
Auth design (locked — see decisions/2026-04-27-idp-jumpcloud.md)
Section titled “Auth design (locked — see decisions/2026-04-27-idp-jumpcloud.md)”- Single self-hosted Access application protecting
docs.adventive.dev/*. - Identity provider: JumpCloud (SAML).
- Policy:
Email ends with @adventive.comANDGroup is engineering-docs-readers(JumpCloud group). - Session: 24h.
- Service-token policy added as a fallback for CI/automation that needs to fetch the site.
- No public path — everything is gated. If a page ever needs to be public, carve it out with a separate Access app on a subpath rather than weakening the main policy.
What this is NOT
Section titled “What this is NOT”- Not a CMS. Editing happens locally in your editor of choice, committed to git.
- Not a wiki. There’s no in-browser editing or per-page comments (yet).
- Not a replacement for the WeasyPrint PDFs. The PDFs are still produced per the house style and remain the formal deliverable for any project that requires one.