The first shippable: a fast, static-first blog with a hand-built design system, deployed to Cloudflare Workers to validate the infrastructure and real-world performance before writing a single feature on top.
What shipped
- Site shell — sticky header with nav, theme toggle, mobile menu, footer
- Blog post detail page — two-level TOC, breadcrumb, anchor headings, copy-link, reading time
- MDX authoring pipeline — callouts, disclosures/accordions, link cards, image + lightbox, tooltips, figure quotes, drop caps, marks, inline quotes, tables
- SEO suite — per-page meta/OG/Twitter, canonical URLs, JSON-LD (BlogPosting + WebSite), sitemap, RSS, robots.txt
- Visual identity — stone + emerald theme, tinted callouts, 3D tactile pressables, light/dark with FOUC prevention
- i18n routing scaffold (en default, vi prefixed)
Reflections
To write: why static-first from day one, the PandaCSS-over-Tailwind call, what fighting the Bun + Astro + workerd toolchain taught me, and what I’d do differently. (A full write-up may become a “How I built this” post — link it above when it lands.)