Local-First Workspace
This starter treats the browser as a first-class runtime, not just a thin remote client.
Why start local-first?
- People can keep working while connectivity is flaky.
- Product design can settle before you commit to sync semantics.
- You can test workflows with realistic state without waiting for every backend surface to exist.
Starter pattern
/appowns authenticated product state.- Drafts are stored on-device first.
- A sync queue is optional and can stay disabled until the product earns it.
- Public pages live separately as SSR content.
What to replace
- The draft schema with your real domain entities.
- The workflow stages with your actual product states.
- The noop sync adapter with a real backend integration once backup or collaboration matters.