A full-stack playground
Build fast, run everywhere.
A full-stack playground with Remix 3, Vite, Cloudflare Workers, and WebAssembly.
Explore the demos
Four ways to try the stackSSR Page
Request-time rendering with timing data and server-owned state on the page.
Open demoRPC
Typed client and server calls flowing through one Remix router without extra ceremony.
Open demoWASM Labs
A growing collection of Rust-powered WASM tools.
Open demoError Handling
Error routes and boundary behavior for failure states, status codes, and recovery.
Open demoWhat this rewrite changes
Routing and controllers
URLs live in app/routes.ts as a typed route map. Controllers in app/actions own the matching actions, so links, redirects, and tests share one URL contract without importing the handlers.
Server-first rendering
Pages render through the Remix component runtime on the server. Client entries hydrate only the interactive demos, and preference forms keep working without JavaScript.
Plain Web APIs
Every controller returns a Request to Response function. The same router runs inside the Node dev server and the Cloudflare Worker, so runtime differences stay in the entry points.