Colophon
How this site is built — the stack it runs on, the typefaces it uses, and how it participates in the independent web.
Stack
Static-site generator with islands architecture and Node.js SSR for dynamic endpoints.
FrameworkUtility-first CSS via @tailwindcss/vite — the full config lives in global.css.
StylingComposition API for interactive islands — tools, search, theme toggle, and more.
ComponentsStrict mode throughout — pages, components, utilities, and a fully-typed i18n layer.
LanguageMarkdown + JSX for blog posts with embedded interactive Vue components.
ContentServer-side syntax highlighting for code blocks. Zero client-side JS.
ContentClient-side fuzzy search across blog posts, tools, projects, and pages.
SearchMiddleware-mode adapter — serves static assets and SSR endpoints from a single origin.
HostingTypography
Ag
Inter
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 & ! ? . , ; :
Ag
JetBrains Mono
const greet = (name: string)
=> `Hello, ${name}!`;
0123456789 => </ >
Colours
Two scales form the site's visual language — indigo for interactive and accent elements, zinc for all neutral surfaces, text, and borders.
Indigo — Accent
Zinc — Neutral
Logo
A pixel-art glyph, hand-crafted in Inkscape on a 0.265 mm pixel grid. Primary fill is indigo-600 (#4f46e5) with a light outline — matching the site's accent palette exactly.
IndieWeb
This site participates in the independent web through two complementary identity standards.
RelMeAuth
rel="me" links on every page point to GitHub, LinkedIn, X, and email. Any profile that links back to this domain can be used to verify identity via RelMeAuth-compatible login flows.
IndieAuth
Authorization and token endpoints delegate to indieauth.com, making henrijskons.eu usable as an OAuth identity provider without server-side token management.
