df03012c8b69cfae44d11410dd7c9e32444824a9
Snap all sample coordinates to multiples of 20 so they sit on the editor grid and read cleanly. Computed midpoint() valves had to land on grid points too, so a few endpoints were nudged (e.g. escalation arsenals 300->280, limits-to-growth source -300->-280). Population is re-laid as a grid cascade so its links no longer overlap the pipes.
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 — the ubiquitous language: Stock, Flow, Converter, Information Link, Polarity, and the Feedback Loops (Reinforcing / Balancing) the wiring forms.
- DESIGN.md — goal-driven design (QFD): goals → functions → components, the House of Quality, the performance budget, and recorded tradeoffs.
- Architecture decisions (
docs/adr/):
Stack
Vite + Vue 3 + TypeScript, Tailwind v4, DaisyUI. Lint/format via oxc (oxlint + oxfmt). SPA-only — diagram model is client-side.
Develop
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.
Description
Languages
TypeScript
70.7%
Vue
28.4%
CSS
0.6%
HTML
0.2%
Dockerfile
0.1%