Publishing Stack¶
Short answer¶
MkDocs + Material for MkDocs is still not outdated in 2026. For a Markdown-first book on a Python stack, it remains one of the most pragmatic choices:
- low barrier to entry;
- fast builds;
- strong search and navigation out of the box;
- easy GitHub Pages deployment;
- natural integration with
uv,ruff, andty.1234
At the same time, the ecosystem is in a transition period. This repository intentionally pins mkdocs<2 to preserve compatibility with the current plugin and theme stack and to avoid unnecessary migration risk in the first public version.
Why I did not switch to Astro Starlight immediately¶
Starlight is a strong option if you need:
- MDX and custom UI components;
- heavier front-end customization;
- tighter alignment with the Astro ecosystem.5
For this book, however, different priorities matter more:
- writing fast;
- publishing reliably;
- keeping the authoring stack in Python;
- avoiding extra CI and local-build complexity without a real need.
That is why the first version is built on MkDocs instead of Astro.
Chosen technology base¶
Core stack¶
uvfor Python, virtual environments, and dependency groups;MkDocsandMaterial for MkDocsfor site generation;rufffor linting;tyas a fast type checker when Python utilities appear in the repo.
Optional research stack¶
marimofor interactive research notebooks;polarsfor trace and eval dataset analysis.
In the current scaffold, marimo and polars are already included as the research dependency group, even though the book does not use them directly yet.
Project commands¶
uv sync --group docs --group dev
uv run mkdocs serve
uv run mkdocs build --strict
uv run ruff check .
uvx ty check
When migration to Starlight makes sense¶
Migration becomes reasonable if the book grows into:
- embedded React, Vue, or Svelte components inside chapters;
- a large amount of custom interactivity;
- a docs-as-app product rather than a docs-as-book project.
At the moment, those requirements do not exist.