Files
verdande/mkdocs.yml
T
Kristian WindandClaude Opus 5 cb77990458 docs(api): an OpenAPI spec, checked against the router
The brief asked for one. docs/api.md is complete and hand-written, and
there was nothing a tool could read.

Written by hand rather than generated from annotations, which would have
meant every handler carrying a second copy of itself in a comment. The
risk with a hand-written spec is that it goes stale, so it does not
depend on anybody remembering: openapi_test.go walks the chi router and
fails both on a route nothing describes and on a description with no
route behind it. CI separately checks it is a valid OpenAPI document.

The test reads the file with a forty-line scanner rather than pulling in
a YAML library. It needs two things — which paths are listed and which
methods each has — and both sit at fixed indentation in a document the
test also owns, which is worth more than a dependency in a project whose
whole shape is one static binary.

The CalDAV routes are excluded deliberately: PROPFIND and REPORT are
outside what OpenAPI can describe, and docs/caldav.md covers them.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-17 10:56:33 +02:00

85 lines
2.1 KiB
YAML

site_name: verdande
site_description: Self-hosted tasks and projects, shared. One binary, SQLite inside it.
site_url: https://kristianwind.github.io/verdande/
repo_url: https://github.com/kristianwind/verdande
repo_name: kristianwind/verdande
edit_uri: edit/main/docs/
# Not the default `site/` — that directory holds the landing page, which is a
# separate thing deployed to a separate place.
site_dir: site_build
theme:
name: material
language: en
# The same two-theme arrangement as the app itself, and the same accent.
palette:
- media: "(prefers-color-scheme: dark)"
scheme: slate
primary: custom
accent: custom
toggle:
icon: material/weather-sunny
name: Switch to light
- media: "(prefers-color-scheme: light)"
scheme: default
primary: custom
accent: custom
toggle:
icon: material/weather-night
name: Switch to dark
features:
- navigation.instant
- navigation.sections
- navigation.top
- content.code.copy
- search.suggest
font:
text: Inter
code: JetBrains Mono
extra_css:
- stylesheets/verdande.css
nav:
- Home: index.md
- Setting it up:
- Self-hosting: self-hosting.md
- As a Rune: rune.md
- Configuration: configuration.md
- Using it:
- Quick add: quick-add.md
- Filters: filters.md
- Importing from Todoist: import.md
- Connecting things:
- Calendar and CalDAV: caldav.md
- Mail to task: mail.md
- Claude (MCP): mcp.md
- AI features: ai.md
# openapi.yaml is deliberately not in the nav: MkDocs copies it to the site as a
# file, and api.md links to it. A nav entry expects a page to render.
- Reference:
- API: api.md
markdown_extensions:
- admonition
- attr_list
- def_list
- tables
- toc:
permalink: true
- pymdownx.details
- pymdownx.superfences
- pymdownx.tabbed:
alternate_style: true
- pymdownx.highlight:
anchor_linenums: true
plugins:
- search
# The pinned toolchain lives in docs/ so the Pages workflow can cache on it; it is
# not a page.
exclude_docs: |
requirements.txt