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/rehypefor 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/knavigation, 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.