How this site works

How this site works

This site is a small work sample in its own right. A few of the decisions behind it:

Static by default
Built with Astro and served as static HTML — no client framework runtime, so the largest content paint is just text and CSS. The three interactive parts (menu, lightbox, contact form) are tiny progressive-enhancement modules.
Bilingual from the ground up
English and Norwegian are equal citizens: a typed slug map is the single source of truth for routes, the language switch and hreflang, so they can never drift apart.
Motion that confirms, never performs
One signature animation, everything else is restraint. Every effect has a reduced-motion variant, and content is never gated behind an animation.
Self-hosted
Built and deployed from my own Gitea instance to Docker behind Traefik. The contact form is a small stateless .NET service — even that is part of my own stack.
No tracking
No analytics beacons, no third-party fonts, no cookies — which is also why there is no cookie banner.