Riadh Mnasri
← Back to blog
2 min read

How I built this blog with Claude Code

There's something a bit dizzying about writing an article on AI-assisted development, on a blog whose code was almost entirely written in conversation with an AI assistant. Might as well embrace the transparency: here's how this site was built, and what it taught me about the process itself.

The initial scaffold

The starting point was standard: Next.js, TypeScript, Tailwind CSS, next-intl for French/English bilingual support, MDX for content. Nothing original in the technical choices. What changed was the speed at which that scaffold became a working site: route structure, a proxy for locale redirection, static page generation, all laid out in one conversation, with back-and-forth to fix the inevitable version quirks (Next 16 renames middleware.ts to proxy.ts, for instance, a detail that breaks silently if you don't check the current documentation).

The design: actually iterating, not just accepting

This is where the collaboration got the most interesting. The first design pass was plain, almost austere. My feedback was direct: too plain, not polished enough. Several iterations later, passing through an editorial direction (serif typography, cream and bordeaux palette) before converging on an identity closer to the tech products I admire (Stripe, Linear, Vercel): massive sans-serif typography, high contrast density, a single vivid accent.

What made the difference wasn't accepting the first proposal, but giving precise, sometimes seemingly contradictory feedback ("no color, no photo" after one overly minimal iteration, then "still too plain" on the next one). Each round of feedback sharpened the understanding of what I actually wanted, without my being able to state it all at once.

IterationDirectionWhat was wrong
1Minimal navy/ivoryToo plain, lacking character
2Editorial (serif, cream/bordeaux)Still perceived as too plain
3Massive sans-serif, Stripe/Linear/Vercel styleNot enough color or photo
4Current version: stronger blue accent, visible portrait, contact CTAOngoing small adjustments

The content: starting from what already existed

Rather than generating generic content, the approach was to go find my actual LinkedIn posts, my actual GitHub projects, my actual chess club notes, and turn them into more developed articles. Nothing was invented: every anecdote (the Bois-Colombes club, the Claude Code training at SFEIR, the living documentation Skill) is real, simply reworked for a blog format instead of a short post.

What it changes in how I see the tool

This project is a direct illustration of the article "AI is not a code generator, it's a thinking partner": the quality of the result didn't depend on the model used, but on the precision of my feedback and my willingness to start over several times rather than settle for a correct first version. A site generated entirely without iteration would have been faster to produce, and probably far less representative of what I actually wanted to show.