No description
  • CSS 52.1%
  • Astro 42.2%
  • JavaScript 5.3%
  • TypeScript 0.4%
Find a file
Kerry Hatcher a0327abbdd
Some checks failed
Deploy to GitHub Pages / build (push) Failing after 6s
Deploy to GitHub Pages / deploy (push) Has been skipped
docs: fix stale internal-link base and issue-filing command in AGENTS.md
Internal links carry a /docs base now, not /openbooks-docs (GitHub Pages
project-site base). The gh CLI pointed at the abandoned GitHub repo; repos
now live on Forgejo at code.kerryhatcher.com, so use tea instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGisjtKSjUcVGw1jX1Hf8M
2026-08-07 13:33:02 -04:00
.github/workflows feat: a Starlight documentation site for every OpenBooks component 2026-08-03 15:44:57 -04:00
.vscode feat: a Starlight documentation site for every OpenBooks component 2026-08-03 15:44:57 -04:00
public feat: a Starlight documentation site for every OpenBooks component 2026-08-03 15:44:57 -04:00
src fix(deploy): document restic/B2 off-site backup and restore, not rclone 2026-08-07 12:41:51 -04:00
.gitignore docs: a front page, and three audience tracks instead of six components 2026-08-03 23:27:09 -04:00
AGENTS.md docs: fix stale internal-link base and issue-filing command in AGENTS.md 2026-08-07 13:33:02 -04:00
astro.config.mjs fix(docs): point canonical site at the custom domain 2026-08-07 12:55:43 -04:00
CLAUDE.md feat: a Starlight documentation site for every OpenBooks component 2026-08-03 15:44:57 -04:00
deno.json feat: serve from openbooks.hatchtech.dev/docs 2026-08-07 11:45:51 -04:00
deno.lock docs: a front page, and three audience tracks instead of six components 2026-08-03 23:27:09 -04:00
DESIGN.md feat: give the first viewport a second authored motion moment 2026-08-04 17:22:14 -04:00
LICENSE Initial commit 2026-08-03 15:12:21 -04:00
package.json docs: a front page, and three audience tracks instead of six components 2026-08-03 23:27:09 -04:00
PRODUCT.md fix: stop the hero frame bleeding past the viewport 2026-08-04 00:37:59 -04:00
README.md feat: a Starlight documentation site for every OpenBooks component 2026-08-03 15:44:57 -04:00
tsconfig.json feat: a Starlight documentation site for every OpenBooks component 2026-08-03 15:44:57 -04:00

openbooks-docs

The documentation site for OpenBooks, built with Starlight on Astro and run with Deno.

Running it

From the superproject root:

just docs

Or from here:

deno install     # first time only
deno task dev    # http://localhost:38082/openbooks-docs
deno task build  # static output in dist/

Layout

Content is Markdown and MDX under src/content/docs/, one directory per section:

start/ install and run the stack
concepts/ the ledger model, money as integer cents, the invariants, the architecture
api/ the Rust API: data model, HTTP endpoints, reports, MCP tools
web/ the Nuxt web app
cli/ the CLI and terminal UI
desktop/ the native desktop client

The sidebar autogenerates from those directories, so adding a page is a matter of dropping a file in the right one. Order pages within a section with sidebar: { order: N } in the frontmatter. Groups and site config live in astro.config.mjs.

The site is deployed as a GitHub Pages project site, so it's served under /openbooks-docs. Astro doesn't rewrite links inside Markdown, so internal links have to carry that prefix themselves, with a trailing slash:

See [the endpoint reference](/openbooks-docs/api/endpoints/).

The dev server honours the same base, so a link that works locally works in production.

Deploying

.github/workflows/deploy.yml builds with Deno and publishes to GitHub Pages on every push to main, and can be run by hand from the Actions tab. Pages is configured with GitHub Actions as its source, so there's no gh-pages branch.

Live at https://hatchertechnology.github.io/openbooks-docs/.

Note that this repository is a submodule of the openbooks superproject. Pushing to main here is what triggers a deploy; bumping the submodule pointer in the superproject does not.

Keeping it honest

These docs describe five other repositories, all submodules of the superproject. When you change behavior in one of them, update the matching page here in the same change. Every route, flag, keybinding, and column name on these pages is supposed to have come from the code rather than from memory.