Patterns
Workflow starters for building a space. Pick one in your MCP client, or read it here.
unfolder.routingBuild a dynamic space the one right way: a named `App` Durable Object running Hono + hono/jsx, with state in the facet's own storage. The foundation every dynamic pattern builds on — start here.unfolder.design-systemBuild a coherent design system in hono/jsx: CSS-custom-property tokens (type/space scales, light+dark), reusable server-rendered components, and Unpoly progressive enhancement with client npm deps bundled from `src/client.ts` (package CSS imported as strings and injected + the swap-target discipline). One component set for both static (unfolder.static-site) and dynamic pages, plus a living component gallery. Builds on unfolder.routing.unfolder.unpolyProgressive enhancement with Unpoly — hypermedia, no SPA: real links/forms that work with JS off, upgraded in place to fragment swaps. Nails the distinction that silently breaks everything (`up-follow` on links vs `up-submit` on forms — the #1 cause of `up.render() needs content`), the swap-target discipline, why handlers must return the fragment not `c.redirect`, re-running enhancements after a swap, and a debug checklist. Builds on unfolder.routing.unfolder.static-siteShip a content site (portfolio, landing page, docs) as plain files — html/css in `public/`, binary in media, served off R2 with zero cold-start. Plus Your Terms: a space is private until you author robots.txt. No worker needed.unfolder.auth-basicGate a route with ONE shared password — Hono `basicAuth`, zero deps, zero storage. The right pick for an owner-only /admin or a staging lock; not for per-user accounts.unfolder.auth-sessions"Sign in with Google/GitHub" + your OWN lightweight session table in the facet's SQLite. For a members area where you want identity + a simple session, not a full account system.unfolder.auth-accountsFull account lifecycle — public sign-up, memberships, paywalls, social/OTP/passkey — with better-auth over durable-sqlite. The complete (heavier) option when a lightweight session isn't enough.