dokk
A tiny static docs generator in Python.
For library and tool authors who want good-looking docs without a theme to assemble:
pip install, write Markdown, publish to GitHub Pages. Search, dark mode and components included.
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/
Open http://127.0.0.1:8002/, edit my-docs/docs/index.md and the page reloads. Add more .md
files and folders and they show up in the sidebar.
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.
Why dokk
- One install, nothing to assemble. Search, dark mode, a sidebar, code highlighting and components work out of the box; no theme or plugins to pick.
- Plain Markdown. Your docs stay readable on GitHub and in any editor; components are short
:::noteblocks, not HTML. - Fast. A thousand pages build in about a second and a half;
dokk serverebuilds on every save. - Static and private. Plain HTML with every asset bundled: no CDN, no tracking, no server.
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,dokk checkfor broken links and anchors, anddokk formatto keep the Markdown tidy.- 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.
Metadata
Release files for dokk 0.0.4
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.4.tar.gz | 265.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dokk-0.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 572.0 kB
Release files / dokk-0.0.4.tar.gz
| Download URL | dokk-0.0.4.tar.gz |
|---|---|
| Size | 265.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
79020530222f4af2b35f1344c52f3af33d9df61798d78beae5ac38550b30e22e
|
|
BLAKE2b-256 checksum How to use checksums |
44644d573907648d145632b437a706908d51fc03c872d447c11ab7d0b6ac32ad
|
| 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.4-py3-none-any.whl
| Download URL | dokk-0.0.4-py3-none-any.whl |
|---|---|
| Size | 306.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c6177825edb1efeca03fb136d555458eeb111145960eff04bbd08bf9f73b6d61
|
|
BLAKE2b-256 checksum How to use checksums |
66cb2fb52c980ebbe209c4c5273501f7d02a338fe28c311763f4be68bb9af5e5
|
| 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