~/starikov

colophon

Colophon

This site is hand-built with Astro 5 — static HTML, no client framework — and deployed to GitHub Pages from a single workflow. But the part worth writing down is the color: every palette you can pick here is generated at build time from my dotfiles theme engine, the same colors.json files that theme my terminal. The whole thing is open source ↗.

The pipeline

One schema fans out to nine consumers. A single colors.json per variant drives a set of templates, which generate configs for eight terminal apps. This site is the ninth — app #9 of the theme engine.

Honest tokens

Terminal palettes are tuned for a terminal, not a document. Used naively as web text they fail contrast — so this site splits them in two. The raw terminal tokens (--bg, --fg, --accent, --border, the sixteen ANSI colors) drive chrome only: borders, fills, accents, the swatches above. --muted is never text — measured, it lands at 1.8–2.5:1 across most variants, well under the readable floor.

The text colors are derived. At build, --text-secondary and --code-comment are computed by mixing color-mix(fg, bg) step by step until they clear the WCAG floors — 4.5:1 for body-adjacent text, 3:1 for large and 14px+ mono. Body fg-on-bg is validated at 4.5:1 for every variant, and any that fails is dropped from the build rather than shipped with a color you can't read. There is no opacity on body text, ever.

This is disclosed here on purpose. It is the web sibling of my validate-themes.sh — the contrast check that runs in the terminal, run again at build for the browser. Authenticity through honesty: the colors are real, and so is the math that makes them legible.

Type specimen

Two families do all the work: Inter for reading and UI, Commit Mono for identity — the wordmark, labels, code, and every terminal echo. No serif.

Inter Variable · body & UI

The quick brown fox jumps over the lazy dog — 0123456789

Commit Mono · identity

~/starikov ❯ theme storm && git commit -m "0O 1lI"

  • Statement 44px · home only
  • Heading 1 32px · h1
  • Heading 2 24px · h2
  • Heading 3 20px · h3
  • Body 16px · reading, 1.5 line-height
  • Small 14px · UI, captions
  • Mono 13px · labels, code

The stack

Astro 5
Static HTML out, Content Layer in. Zero client framework — no React, no hydration tax.
Vanilla TypeScript
The ⌘K palette, the theme runtime, the pre-paint boot script — a few KB of hand-written TS, no islands.
Pagefind
Full-text search indexed at build, loaded on demand. The search runs in your browser, not a server.
GitHub Actions + Pages
One workflow: pull the live sources, generate the themes, build, gate, deploy. A failed build never ships.
Inter + Commit Mono
Self-hosted, subset to latin, preloaded. Metric-matched fallbacks so nothing shifts as they load.

Provenance

The 8 curated families (16 live variants) are regenerated on every deploy. This build:

Palette synced from dotfiles@f274559 built 2026-07-26 10:55 UTC

Deploy runs ↗ Site source ↗ Theme engine ↗