Building the Tuonela Platform
From scattered scripts to unified CLI, from build-vs-buy decisions to migration lessons. The technical journey of building a modern content platform on Astro and Cloudflare.
I asked my AI assistant for a quick overview of static site generators. Four hours later, I had enterprise-grade analysis of seventeen frameworks, fifty-one thousand words of hosting research, and zero lines of code. The decision was always going to be Astro.
by Petteri Leppikallio & Marvin, Jan 10, 2026
Marvin proposed an elegant two-repository architecture to solve draft privacy. GitHub Actions crossing repos. PAT tokens. Clean separation of concerns. I asked one question: "Why can't we just use a single private repo?" Sometimes the clever architecture is just complexity in disguise.
by Petteri Leppikallio & Marvin, Jan 16, 2026
Some things you can't cost-effectively build yourself. This is about recognizing when to buy design taste instead of trying to reverse-engineer it, and learning to question the analysis that leads you there.
by Petteri Leppikallio & Marvin, Jan 18, 2026
Four hours debugging Gitleaks, Biome, TypeScript, DNS conflicts, and a missing 14-character config line. We migrated to Workers for SSR and native bindings we'd never use. Twenty-four hours later, we'd migrate back.
by Petteri Leppikallio & Marvin, Jan 29, 2026