jacquardSnapshot

← snapshot

1488 bytes
# lovelace

The web frontend for [jacquard](../README.md) — named for the Massachusetts
mill town that ran rows of power looms on one river; jacquard is the loom
mechanism, lovelace is the mill you walk into to operate one.

Talks to [`jac-serve`](../crates/jac-serve) over HTTP. Not part of the Cargo
workspace (`Cargo.toml`'s `members = ["crates/*", "xtask"]` never reaches
here) — a separate toolchain for a separate layer.

## Run it

```bash
# from the repo root, in one terminal:
cargo run -p jac-serve -- --seed-demo

# in another:
cd web
npm install
npm run dev
```

Then open `http://localhost:3000`. `next.config.ts` proxies `/api/*` to
`jac-serve` (default `http://localhost:8787`; override with `JAC_SERVE_URL`,
see `.env.example`).

## Layout

- `app/jacquard.css` — the design system: forked from the phantom-thread
  marketing site's textile theme (`../../rust-blog/app/phantom-thread/`),
  renamed to a `jac-` token/class namespace, with an indigo accent and a
  punched-card motif in place of the running stitch.
- `app/new/wizard.tsx` — "Warping the loom", the init wizard.
- `lib/api.ts` / `lib/types.ts` — the typed client over `jac-serve`'s JSON
  contract.
- `components/voice-statement-input.tsx` — attestation defaults to speaking
  the statement (Web Speech API, transcript only — no engine changes), with
  a "Type it instead" fallback for browsers without speech recognition.

## Scripts

`npm run dev` / `build` / `start` / `lint` / `typecheck`.