Skip to content

feat(docs): documentation site -- MkDocs Material + mkdocstrings on GitHub Pages - #10

Merged
CameronBrooks11 merged 1 commit into
mainfrom
feat/docs-site
Jun 13, 2026
Merged

CameronBrooks11 merged 1 commit into
mainfrom
feat/docs-site

Conversation

@CameronBrooks11

Copy link
Copy Markdown
Member

SSG selection (researched, not defaulted)

Weighed MkDocs+Material against Sphinx (Furo/MyST), Docusaurus, Astro Starlight, VitePress, Hugo, Jekyll, mdBook, and Zola. MkDocs + Material + mkdocstrings wins for this repo:

  • the existing docs/*.md are plain markdown with relative links and $...$ LaTeX — they build unmodified (arithmatex); every non-Python SSG needs front-matter surgery and offers no Python API autodoc
  • pure-Python toolchain under uv (one docs dependency group), trivially CI'd
  • mkdocstrings/griffe gives static-analysis API reference from our numpy-style docstrings (works with the lazy-Cairo import)

MkDocs 2.0 caveat handled: 2.0 is an incompatible rewrite (plugins removed). Material 9.x is maintained and pinned to MkDocs 1.x; the Material team's successor Zensical is the designated drop-in migration path once its plugin phase lands. The pin (mkdocs-material>=9.5,<10) and rationale are recorded in pyproject.toml.

What's in the site

  • Landing page; Guide (CLI / Python API / JSON schemas); Internals (Architecture / Geometry diff engine); API reference (mkdocstrings); Changelog + Contributing (snippet-included, single source of truth)
  • MathJax for the LaTeX notation already used in the docs; light/dark palette; search; edit-on-GitHub links

Deploy

.github/workflows/docs.yml: mkdocs build --strict on PRs (build gate, no deploy) and on pushes to main (deploy via actions/upload-pages-artifact + actions/deploy-pages). Pages is already configured for workflow deployment. Site URL: https://cameronbrooks11.github.io/gerberdiff/

Local mkdocs build --strict: clean, 0.7 s. All repo gates green; new files ASCII-clean.

🤖 Generated with Claude Code

…itHub Pages

Static-site generator selection (researched against Sphinx+Furo/MyST,
Docusaurus, Starlight, VitePress, Hugo, Jekyll, mdBook, Zola):
MkDocs + Material fits this repo best -- the existing docs are plain
markdown with relative links and dollar-sign LaTeX that build unmodified,
the toolchain stays pure-Python under uv, and mkdocstrings (griffe,
static analysis) is the only first-class Python API autodoc outside
Sphinx. Material 9.x is pinned <10 / MkDocs 1.x: MkDocs 2.0 is an
incompatible rewrite, and the Material team's successor (Zensical) is
the designated drop-in migration path once its plugin phase lands --
recorded in pyproject next to the pin.

Site (https://cameronbrooks11.github.io/gerberdiff/):
- landing page, existing guide/internals docs unchanged in nav
- API reference via mkdocstrings (numpy docstring style)
- Changelog + Contributing included via pymdownx.snippets
- MathJax (arithmatex generic) for the LaTeX already used in docs
- light/dark palette, search, edit-on-GitHub links

Deploy: .github/workflows/docs.yml builds with 'mkdocs build --strict'
on PRs and pushes; pushes to main deploy via actions/deploy-pages
(Pages is configured for workflow deployment).

Also: module docstring for the top-level package (surfaced by the API
reference), absolute LICENSE link in CONTRIBUTING (was a dead relative
link on the rendered site), docs badge + site link in README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@CameronBrooks11
CameronBrooks11 merged commit f9c5458 into main Jun 13, 2026
12 checks passed
@CameronBrooks11
CameronBrooks11 deleted the feat/docs-site branch June 13, 2026 02:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant