Why I built this site with Astro and Claude Code
Tien Nguyen
· 2 min read
I built this site in an afternoon, mostly by reviewing what Claude Code wrote rather than typing it myself. That is roughly my whole job now: plan, review, say “no, again”, ship.
The stack is deliberately boring
- Astro for static output. No client JS I do not need.
- Tailwind v4 for styling, with design tokens driven from a single file.
- MDX for these posts, with real syntax highlighting for code.
Boring is the point. The interesting part isn’t the framework, it’s how little of it I actually typed.
What the agent did
I described the design, the routes, and the content model. Claude Code wrote the components; I read every diff and sent most of them back at least once. The reading-time helper below is the kind of small, typed, testable thing it gets right on the first try:
// small, typed, testable: exactly what an agent should be writingexport function readingTime(text: string): string { const words = text.trim().split(/\s+/).filter(Boolean).length; return `${Math.max(1, Math.ceil(words / 200))} min read`;}What I still own
The taste. Knowing when “done” isn’t done, catching the edge case the tests missed, deciding what not to build. The agent is fast. Being right is still on me.
More soon: the AI-first workflow in detail, front end craft, and honest takes on the tools that actually hold up.
Liked this? Let's build something.
I take on a small number of front end and AI-engineering projects, and I'm always up for talking shop. Tell me what you're working on.