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.tsis the contract). - Zero JS by default; islands only where a demo needs them.
- Shared
BaseLayoutso 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.