A canon of economic theorems, each as a live visualization. Drag a slider, watch the math move.
72 pages across trade, macro, micro, game theory, and finance. Every page shows
the formal statement, a Plotly chart fed by a pure compute(), parameter sliders, a
short derivation, and a reference. No backend, no fabricated data, no sliders without math behind them.
One template, one template only. Every theorem renders the formal statement in KaTeX, a live Plotly chart, and parameter sliders that drive the chart through a pure compute(). No ad-hoc layouts, no novelty per page.
Typed theorem config
Adding a new theorem means writing one TypeScript file that exports a Theorem object with params, a pure compute function, a chart spec, math strings, and references. The registry does the rest.
No fabricated formulas
Every derivation cites a canonical source (Krugman, Barro, Varian, Mas-Colell, Cochrane, Hull). Formulas and closed-form solutions are checked against textbook derivations, not generated.
Static, fast, forever
Pure SPA: Vite build, Nginx static serve, Cloudflare in front. No databases, no auth, no backend to rot. The page you see is the code you run.
Catalog
72 theorems, 5 domains
Each theorem is a single page at /{domain}/{slug}. Names below are entry points; the live app registry is the source of truth.
Modigliani-Miller, Merton bond discount, Put-call parity
Macaulay duration, Nelson-Siegel yield curve
Option delta, bond convexity, Merton equity, SML
Stack
Technology
Static single-page app. No server. Build artifacts ship to a VPS and sit behind Nginx plus Cloudflare.
Unit tests cover each theorem's compute function; Playwright smoke-tests every route against a
production build.
Vitebuild + dev
React 19UI
TypeScriptstrict
React Routerrouting
Plotly.jscharts
KaTeXmath
Tailwind v4styling
Vitestunit tests
Playwrightsmoke tests
Architecture
One template, many theorems
The core contract is a typed Theorem: params, a pure compute function, a chart spec,
math strings, and references. The same TheoremPage component consumes every theorem,
so the visual language and interaction model stay identical across the catalog.