---
title: Docs site
description: How this site is built, where its pages live, and how to update screenshots.
---

The site is [Blume](https://useblume.dev) in `apps/docs`, served at
docs.vimputer.com. Root `docs/` holds plans, reports, and decisions still in
flux; a page moves here once what it describes has shipped.

```bash
pnpm docs:dev        # local server with reload
pnpm docs:validate   # links, anchors, assets
pnpm docs:deploy     # build, then wrangler deploy to Cloudflare
```

## Layout

- apps/docs/
  - blume.config.ts
  - components.ts
  - theme.css
  - docs/
    - meta.ts
  - components/
  - pages/
  - assets/screenshots/

| Path | Holds |
| --- | --- |
| `docs/` | Pages, served under `/docs`. Each folder's `meta.ts` sets its order and title. |
| `pages/index.astro` | The home page |
| `components/` | `LayerKeyboard`, `ModelMap`, `Term`, and `Glossary`, registered in `components.ts` so pages use them without imports |
| `components/glossary.ts` | Glossary entries; `<Term id="…">` links to one |
| `theme.css` | Colours and component styles over Blume's defaults |

Blume's own components (Card, Steps, Tabs, Tree, TypeTable) and `:::note`
callouts also work without imports.

## Screenshots

App screenshots are generated, never captured by hand. After a UI change:

```bash
pnpm docs:screenshots
```

It runs the desktop app invisibly through the `verify` CLI against a copy of
`apps/desktop/fixtures/sandbox/`, so it never touches your config or Karabiner,
and rewrites the PNGs in `assets/screenshots/`. To add one, add an entry to
`SHOTS` in `apps/desktop/scripts/docs-screenshots.ts`. Pages should describe what
the fixture shows.
