Skip to content

Publish the documentation as a site on Read the Docs (Zensical) #81

Description

@allen0099

Summary

The documentation is a set of Markdown files (README.md plus docs/*.md, around 2,800 lines) read on GitHub. Publish it as a documentation site that needs no infrastructure of our own to maintain.

Decision

  • Hosting: Read the Docs (free for open source). Builds on every push, gives each pull request a preview build, keeps one build per released version, and includes search and a CDN. The only file to maintain is .readthedocs.yaml.
  • Generator: Zensical, from the team behind Material for MkDocs. It reads the Markdown we already have, and Read the Docs documents it officially. Material for MkDocs itself enters maintenance mode on 2026-11-05 (fixes only, no new features), so it is not a good choice for a new site. Sphinx would mean rewriting the Markdown in reStructuredText.
  • API reference: generated from the existing Google-style docstrings with mkdocstrings-python, which Zensical supports.

Plan

  • zensical.toml with the navigation: home, guides (CACHE_FLOW, SESSION, JWT_CLAIMS, STATE), API reference, development (DEVELOPMENT, CONTRIBUTING), changelog.
  • docs/index.md as the landing page. The GitHub README.md stays as-is, since PyPI renders it.
  • A docs dependency group in pyproject.toml, so uv run zensical serve works locally.
  • .readthedocs.yaml
  • A CI job that builds the site, so a broken link or page fails the PR before Read the Docs sees it.
  • Documentation URL in [project.urls] and a link in the README.
  • Import the repository on readthedocs.org (maintainer, needs the GitHub account).

Open questions

  • Zensical is still pre-1.0 (0.0.x at the time of writing), so the version should be pinned to a range and upgraded deliberately.
  • Traditional Chinese: only the README has a translation (docs/README.zh-TW.md). Read the Docs handles translations as a separate linked project. Out of scope for the first version; the file stays where it is.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions