Static-first
HTML is generated at build time. The browser downloads finished pages — not a framework that has to assemble itself first.
Colophon
The full stack — from the language in the content to the server that delivers it.
This site is deliberately small and fast: no page builder, no tracking sprawl, no megabytes of framework. What follows is the entire stack, layer by layer — for anyone who likes to see it broken down.
Read top to bottom: at the top, what the visitor touches in the browser — at the bottom, the server that delivers it all. Each layer carries the one above it.
All copy lives in typed dictionaries. German and English share one interface — a missing translation fails the build, not production.
Exactly one React island: the hand-written terminal with its virtual filesystem. It hydrates on client:load — everything around it stays static.
Tailwind v4 through Vite, on top of semantic OKLCH tokens. Theme and accent colour switch at runtime — with no flash before first paint.
Variable fonts (Martian Mono, IBM Plex) are self-hosted, subset and preloaded. Social cards are rendered once at build time with Sharp.
A strict TypeScript check, Biome for lint and format, pnpm for packages. Few dependencies, clear rules.
GitLab CI builds on Node, rsync ships dist/ over SSH, Caddy handles the reverse proxy, compression and language routing — Cloudflare the edge cache.
HTML is generated at build time. The browser downloads finished pages — not a framework that has to assemble itself first.
JavaScript runs only where it earns its place — in exactly one component. Everything else does without.
Fonts, analytics and hosting all run on our own infrastructure. No third party sits on the critical path.
Content, configuration and even the Caddy config come from typed TypeScript. Anything that doesn't line up fails the build.
This page is part of the website it describes — same stack, same tokens, same build. Questions about any of it? Get in touch. [email protected]