Julien Calixte 46d3279a3c feat(samples): add "Tragedy of the commons, fixed" companion
Rework the trap so its Pasture is a renewable commons (logistic
regrowth) with herd mortality: unregulated breeding overshoots the
renewal rate, grazes the grass to bare dirt, and the herds then starve
with it — resource and users ruined together, not just the grass.

Add the fixed companion sharing that exact renewable Pasture. Stocking
is regulated against an agreed reserve, so the commons holds and the
herds settle at a sustainable size — more cattle than the trap's boom
leaves alive. The only difference between the pair is regulation, not
regrowth, so the comparison is honest.
2026-06-21 16:52:23 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00
2026-06-20 01:28:32 +02:00

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/):
    • ADR-0001 — feedback loops are detected from structure, not stored.
    • ADR-0002 — Vue Flow is the editor substrate; the domain Model is the source of truth.
    • ADR-0003 — a Flow is a node; Source/Sink clouds are materialised nodes.
    • ADR-0004 — simulation behaviour comes from a small fixed vocabulary of rules over Information Links, not free-form formulas.
    • ADR-0005 — 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 (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
meadows.apoena.dev
Readme 879 KiB
Languages
TypeScript 70.7%
Vue 28.4%
CSS 0.6%
HTML 0.2%
Dockerfile 0.1%