← cd /blog

Why I moved the site to Next

The site was a Vite + React SPA, served as static files. It worked, but every new screen idea turned into friction.

I moved it to a single Next (App Router) app that acts as a platform: the blog is the first new screen, and admin/dashboards come later without a new repo.

Routing per language

Each language has its own URL, with hreflang:

export function generateStaticParams() {
	return locales.map((lang) => ({ lang }))
}

Post content lives in MDX, versioned alongside the code.