Colophon
How this was made.
A colophon is a publishing tradition — a note about the tools and craft behind the work. This is ours.
Framework
- Astro
- Static site generator. Pages are rendered to HTML at build time; interactive components hydrate only where needed. No JavaScript is shipped to the browser for purely content pages.
- Svelte
- Powering all interactive calculator widgets. Chosen for its minimal runtime footprint and the fact that it compiles away rather than shipping a virtual DOM.
- TypeScript
- Strict mode throughout. Calculator math and data types are fully typed to catch unit errors at compile time rather than in the browser.
Typography
- Inter Variable
- Body text, headings, UI. The variable font means a single file covers every weight from 100 to 900 with no layout shift.
- JetBrains Mono Variable
- Code snippets, numerical outputs in calculators. Tabular figures are enabled so that numbers align in columns without extra CSS.
Design
- Design tokens
-
All colours, spacing, radii, and type scales live in a single
tokens.jsonfile that feeds both the CSS custom properties and any component-level code. Change one number, it propagates everywhere. - CSS custom properties
-
No CSS-in-JS, no utility classes framework. Plain CSS with custom properties
threaded through the design token system. Responsive type uses
clamp(); colours useoklchandcolor-mix(). - Charts
-
Pure SVG — no charting library. The growth charts in the calculators are
hand-drawn with
<path>and<linearGradient>elements computed in Svelte reactive statements. Smaller bundle, full control over every pixel.
Infrastructure
- Cloudflare Pages + Workers
- Static pages served from Cloudflare's edge. The planned visitor chat feature will run as a Cloudflare Worker using the Workers AI binding — staying in the same infrastructure keeps latency low and cost predictable.
- GitHub
- Source code and version history. Every meaningful change is a commit.
Built with AI assistance
This site was built collaboratively with GitHub Copilot Chat. The architecture decisions, content, and direction are human — the AI assists with implementation: writing component code, checking math, generating boilerplate. The wiki directory in the repository acts as a persistent memory for the agent across sessions.
This is an honest disclosure, not a disclaimer. AI assistance is a tool like any other; what matters is whether the output is correct, useful, and maintainable. I believe it is. If you find otherwise, write to me.
Last updated · site changelog