Files
blueprints/README.md
Julien Calixte 03804b10dc feat: gallery + generic blueprint viewer, add Grid blueprint
Refactor the List-specific screen into a data-driven, reusable viewer:
- generic Blueprint type + shared LoadState machine + registry
- vue-router: / (gallery) and /b/:slug (illustration)
- BlueprintViewer renders any blueprint; specimens stay bespoke
- add Grid blueprint (6 functions incl. Position) + GridSpecimen
2026-07-02 18:34:49 +02:00

50 lines
1.8 KiB
Markdown

# blueprints
Deployed at https://blueprints.apoena.dev
Interactive illustrations of UI-pattern **blueprints** — the formal, framework-agnostic
contracts from [`blueprint-ontology`](https://git.apoena.dev) (signature, state machine,
behaviors, invariants, critical performance, failure modes), rendered in a cyanotype
"blueprint" style: monospace, blueprint-blue paper, faint grid, amber annotations.
The first screen illustrates the **List** blueprint and its seven functions —
Display · Scroll · Load · Filter · Sort · Select · Act — as a specimen-under-glass with a
full contract readout, an anatomy/composition map, and the `LoadState` machine.
<!-- docs:start -->
## Documentation
- [CONTEXT.md](CONTEXT.md) — ubiquitous language (Blueprint, Viewer, Specimen, Readout, …)
- [DESIGN.md](DESIGN.md) — architecture & build-out decisions
<!-- docs:end -->
## Develop
```bash
pnpm dev # frontend on :5173
pnpm build # type-check (vue-tsc) + production build → dist/
pnpm lint # oxlint (pnpm lint:fix to autofix)
pnpm fmt # oxfmt (pnpm fmt:check to verify only)
```
## Stack
- **Vite + Vue 3 + TypeScript** SPA (no backend)
- **Tailwind v4 + DaisyUI** with a custom `blueprint` dark theme (`src/style.css`)
- **oxlint + oxfmt** for lint/format (no semicolons, double quotes)
- Served in production by **nginx** (see `Dockerfile` + `nginx.conf`)
Blueprint content lives as typed data in `src/data/`; the viewer components render it.
Source of truth: the `list` blueprint in `blueprint-ontology`
(`blueprints/list/README.md`, `list.als`, `list.test.als`).
The original single-file static illustration is archived at
[`archive/list-illustration.html`](archive/list-illustration.html).
## Deploy
Pushes to `main` are picked up by Coolify at https://platform.apoena.dev and deployed to
https://blueprints.apoena.dev.