dokk
A tiny static docs generator in pure Python.
Folders of Markdown in, a fast static docs site out. No Node.
Live demo and docs · Quick start · Components · Themes · Theme showcase · PyPI
Quick start
pip install "dokk[serve,search]"
dokk init --root my-docs
dokk serve --root my-docs # http://127.0.0.1:8002/
dokk build writes plain HTML to .dokk/build/, ready for GitHub Pages or any static host.
dokk init also creates a workflow that publishes it on every push.
What you get
- A sidebar built from your folder tree, or arranged in
dokk.toml. - Markdown with tables, footnotes, task lists, definition lists and heading anchors.
- Components as Markdown directives: callouts, tabs, cards, steps, file trees, badges and more.
- Code highlighting at build time, in light and dark.
- Full-text search with Pagefind, fully static.
- Eight Basecoat styles and the shadcn/ui colors, vendored: no CDN, no third-party requests.
dokk servewith live reload, anddokk checkfor broken links and anchors.- A sitemap, a Markdown copy of every page and optional
llms.txt, for search engines and AI tools.
The documentation is built with dokk from the docs/ folder in this repository.
Development
Install everything (dev tools, dev server, search, browser tests):
uv sync --all-extras # .venv with the exact versions from uv.lock
uv run playwright install chromium # once, for the browser tests in tests/e2e
Run tools through make (below) or activate .venv. Plain uv sync without --all-extras
removes the extras again.
Run the checks:
make lint # all of the below
make format # ruff: fix lint issues, then format
make typecheck # ty
make test # pytest
Serving the sites
The repo has two sites. Without --root, dokk uses the current folder.
| Site | What it is | Serve it with |
|---|---|---|
docs/ |
dokk's own documentation | dokk serve --port 8001 --search |
examples/basic/ |
Acme Widgets, a fictional site that uses every feature and component; the fixture for the tests | dokk serve --root examples/basic --port 8002 --search |
dokk serve rebuilds on every change and reloads the browser. It includes draft pages and
ignores the base path; --search also rebuilds the search index.
To look at a production build instead:
dokk build --root examples/basic
python -m http.server 8002 -d examples/basic/.dokk/build
Releasing
The version comes from the git tag (hatch-vcs); there is nothing to bump. Push a tag such as
v0.0.2 and .github/workflows/release.yml builds the wheel and sdist and tests the wheel. Once
the pypi environment is approved, it publishes to PyPI and creates the GitHub release. CI tests
Linux, macOS and Windows on every push.
Vendored assets
Basecoat and the shadcn/ui color themes are vendored; see VENDORED.md. Update them with
python scripts/vendor_basecoat.py and python scripts/vendor_shadcn_themes.py (standard library
only, no Node).
Metadata
Release files for dokk 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dokk-0.0.3.tar.gz | 262.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dokk-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 567.1 kB
Release files / dokk-0.0.3.tar.gz
| Download URL | dokk-0.0.3.tar.gz |
|---|---|
| Size | 262.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c589400f98e7cc8b40bf4d5f5392937fe301580130437d732c0d58f354b8dbaa
|
|
BLAKE2b-256 checksum How to use checksums |
51e05be5110d5b6408b0a4ec17b22121af4a522577b2c7109b4ff0402d70c038
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / dokk-0.0.3-py3-none-any.whl
| Download URL | dokk-0.0.3-py3-none-any.whl |
|---|---|
| Size | 304.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cd6c0deaf1165fd1bab1de2bb475091d61cdd7cbe3b060607b1e847af46db061
|
|
BLAKE2b-256 checksum How to use checksums |
9a61f5c16e9b8101345816e7186260e397a7392ee2cac00852540037f0b489ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency log