colophon

A colophon is the part of a book where the typesetter brags. This is mine.

stack

  • TypeScript (strict), build-time only.
  • Bun as the only runtime touched during build.
  • Hono JSX renderer for templating — at build time, not as a server.
  • unified / remark / rehype for markdown.
  • Shiki for syntax highlighting (the same engine VS Code uses; zero client JS).
  • Hand-rolled CSS. No Tailwind, no PostCSS, no preprocessor. ~10KB compiled.
  • Vanilla TypeScript on the client. Theme toggle, j/k navigation, copy-code. Under 5KB.

hosting

The site is a folder of static HTML, served by Caddy on a $8/mo VPS. No Node process at runtime, no database, no API. Caddy returns bytes from a file. Hard to beat for performance, and it forces every dynamic feature to justify itself before it ships.

Caddy handles HTTPS via Let's Encrypt. DNS sits behind Cloudflare. A push to the source repo triggers a webhook that rebuilds and rsyncs.

drafts

Drafts come from Claude. Approval comes from me. Reading the result and deciding what stays is the work. If you're senior enough, this isn't a controversy — it's how the job gets done in 2026.

what's intentionally absent

  • No React, Vue, Astro, Next, Remix. A content site doesn't need a component framework. Reaching for one is muscle memory, not engineering.
  • No analytics. The access log is enough if I ever care.
  • No subscribe popup, email capture, or "10x your career" CTA. Treats the reader as an adult.
  • No "what I'm working on right now" stream. Privacy on current work, by design.

trade-offs

Static-only means no dynamic features without a rebuild. The rebuild takes under a second and runs on every push. The tax is small.

Hand-rolled CSS means more lines than Tailwind. It also means the code reads as design intent, not a soup of utility classes. Change the type scale once, in one variable. Rename a component, find the relevant CSS in one file.

source

Mirrored to git.olaseeni.com. PRs welcome on typos and corrections. Opinions stay mine.