Files
meadows/README.md
Julien Calixte c361b05ec4 feat(editor): chart behaviour over time with uPlot
Draw the simulation's Stock trajectories with uPlot (ADR-0005): a real time
axis, hover-to-read values, and a playhead-marker hook the canvas animation
drives. SimChart owns the imperative uPlot lifecycle behind a small prop API.
2026-06-20 14:35:35 +02:00

46 lines
1.8 KiB
Markdown

# meadows
A canvas for thinking in systems — stocks, flows, converters, and feedback loops.
Inspired by Donella Meadows' _Thinking in Systems_.
Deployed at https://meadows.apoena.dev
## Design & docs
- [CONTEXT.md](./CONTEXT.md) — the ubiquitous language: Stock, Flow, Converter,
Information Link, Polarity, and the Feedback Loops (Reinforcing / Balancing) the
wiring forms.
- [DESIGN.md](./DESIGN.md) — goal-driven design (QFD): goals → functions →
components, the House of Quality, the performance budget, and recorded tradeoffs.
- Architecture decisions (`docs/adr/`):
- [ADR-0001](./docs/adr/0001-detected-feedback-loops.md) — feedback loops are
detected from structure, not stored.
- [ADR-0002](./docs/adr/0002-vue-flow-substrate.md) — Vue Flow is the editor
substrate; the domain Model is the source of truth.
- [ADR-0003](./docs/adr/0003-flow-as-node-materialised-clouds.md) — a Flow is a
node; Source/Sink clouds are materialised nodes.
- [ADR-0004](./docs/adr/0004-rate-rules-not-formulas.md) — simulation behaviour
comes from a small fixed vocabulary of rules over Information Links, not
free-form formulas.
- [ADR-0005](./docs/adr/0005-uplot-behaviour-chart.md) — uPlot draws the
behaviour-over-time chart; a charting dependency that earns its keep.
## Stack
Vite + Vue 3 + TypeScript, Tailwind v4, DaisyUI. Lint/format via [oxc](https://oxc.rs)
(oxlint + oxfmt). SPA-only — diagram model is client-side.
## Develop
```bash
pnpm install
pnpm dev # frontend on :5173
pnpm lint # oxlint (pnpm lint:fix to autofix)
pnpm fmt # oxfmt (pnpm fmt:check to verify only)
pnpm build # type-check + production build (what Coolify runs)
```
## Deploy
Pushes to `main` are picked up by Coolify at https://platform.apoena.dev.