No description
  • CSS 52.1%
  • Astro 42.2%
  • JavaScript 5.3%
  • TypeScript 0.4%
Find a file
Kerry Hatcher fa0659253c
Some checks failed
Deploy to GitHub Pages / build (push) Failing after 5s
Deploy to GitHub Pages / deploy (push) Has been skipped
docs: the session cookie is now __Host-ob_session
Adds the reason alongside the name: the prefix is honoured only for a Secure,
Path=/, Domain-less cookie, and in return refuses parent-domain scoping — which
is what keeps a sibling hostname under hatchtech.dev from writing a session
cookie the app would read.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014dzGnUu13aw9sWokr7j1fV
2026-08-07 17:33:21 -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 docs: the session cookie is now __Host-ob_session 2026-08-07 17:33:21 -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.