Working notes for Claude

Quick reference for editing this site. README.md covers user-facing setup; this file covers things that help with code changes.

Stack

Verify a change

deno task build    # full build to _site/ — fast (sub-second), run this after any change

Built HTML lives in _site/<route>/index.html. Use grep against those files to confirm rendered output rather than starting the dev server.

File conventions

Location What it is
*.tsx at the project root, or <dir>/index.tsx A page (because pageSubExtension: "" in _config.ts). Exports default (renderer), plus title, description, layout.
_includes/*.tsx or _includes/*.vto A layout. JSX layouts receive children from the rendered page body.
<dir>/_data.yml Sets defaults for all pages in that dir (e.g. training/_data.yml sets layout: training-log.tsx).
*.md Markdown page. Frontmatter goes through the same preprocessors as .tsx/.jsx (image dim extraction, draft filter).

Lume scans for files automatically — no manifest to update when adding a new .md or .tsx.

JSX / SSX gotchas

Lume data API

Pages/layouts can be a function (data: Lume.Data) => JSX. Useful members:

Filters defined in _config.ts

Available in .vto templates as value |> filterName. In .tsx, prefer inline JS (the training-log.tsx layout duplicates formatDuration / activityTotals for this reason — keeps the file self-contained and typed).

Image pipeline

Training logs

Books

CSS

Things to not do