#astro #architecture

Why Astro for the Static Fleet

Most too.foo apps are static Astro sites with shared @too-foo/ui chrome — here's the tradeoff.

When the monorepo absorbed a dozen subdomains, the default stack became Astro + TypeScript + Tailwind v4 + @too-foo/ui. Not because Astro is fashionable — because the workload is MDX lessons, reading modes, and lightweight tool pages that ship as HTML.

What Astro buys

  • Content collections with Zod schemas (content.config.ts is the contract).
  • Zero JS by default; islands only where a demo needs them.
  • Shared BaseLayout so every subdomain gets the same header, footer, and tokens.

Known exceptions

Soma stays on Next.js (OAuth + SQLite on sbl1). Polls is a Cloudflare Worker. Evolution, mcad, ecad are Rust/Trunk WASM bundles. Waivers are documented in each app’s STATE.md, not ignored.

The rule of thumb

If the app is mostly prose or a catalog, Astro. If it needs durable server state or a long-lived sim kernel in WASM, pick the tool that fits — then document the waiver.