Two AIs, One Migration
The idea for this wasn't mine — it was Claude's. In a planning session it said the highest-leverage change left was moving the site to a static site generator: I'd already tripped over the nav-sync bug twice, and every new page made keeping language versions in sync by hand harder. A shared template would end it permanently.
opencode and I did the work. The main steps:
- Install:
npm install --save-dev @11ty/eleventy; configure.eleventy.jsto readsrc/and output_site/. - Templates: one shared layout per language in
src/_includes/for the nav and footer; each page becomes a template with apermalinkthat keeps the old.htmlURLs. - Blog: posts are Markdown in
src/posts/with a date and category; the index builds itself from thepostcollection. - Build:
npm run buildwrites everything to_site/;npm run servelive-previews atlocalhost:8080. - Deploy:
wrangler.tomlnow serves./_site; the generated_site/is committed, sogit pushstill ships the site.
What didn't change matters more. The pages the browser loads are still plain HTML — same CSS, same JavaScript, same URLs. Eleventy is a build tool, not a runtime framework, so the "no frameworks" spirit survives. The difference is pages get assembled instead of pasted.
The honest footnote: this site is written by opencode and steered by me — and the migration idea came from Claude. Three parties, one tiny website. It's true, so the site says so.