Skip to content

Documentation Workflow

This project has three documentation targets:

Target Source Output
Zensical site docs/index.md, docs/getting-started.md, docs/api.md site/
Rust crate docs and root README docs-shared/guide.md included by src/lib.rs docs.rs and README.md
Python package README docs-shared/guide.md referenced by pyproject.toml PyPI package description

Keep user-facing pages focused on using the library. Build and generation instructions belong here.

Authoring Rules

Use Zensical content tabs in site pages when showing equivalent Rust and Python examples:

=== "Rust"

    ```rust
    let miner = factory.get_miner(ip).await?;
    ```

=== "Python"

    ```python
    miner = await factory.get_miner("192.168.1.10")
    ```

Keep docs-shared/guide.md in plain Markdown. It is included directly in Rustdoc and is also the Python package README, so it should avoid Zensical-only syntax.

Regenerate The Root README

Regenerate the root README from Rust crate docs:

cargo +nightly doc2readme --expand-macros --template README.j2 > README.md

The nightly toolchain is needed because src/lib.rs includes docs-shared/guide.md with include_str!, and cargo-doc2readme needs macro expansion to read it.

Preview The Zensical Site

Install the documentation extra in your active environment if needed:

python -m pip install -e ".[docs]"

Preview while editing:

zensical serve

Build the static site:

zensical build

The site configuration lives in zensical.toml.