Design Desk is a local-first design studio for building and reviewing UI. It includes a polished starter document, strong typing across the model and ops engine, real-time collaboration over a bundled WebSocket server, replayable history, and export to both JSON and React + Tailwind.
npm install
npm run dev- App: http://localhost:5173
- Local collaboration server health: http://localhost:8787
- The app auto-creates a
?sessionId=...URL so two tabs can collaborate immediately.
npm run dev: start Vite and the local collaboration server togethernpm run build: typecheck via project references, then build the appnpm run lint: run ESLint with zero warnings allowednpm run typecheck: run TypeScript project reference checksnpm run test: run the Vitest suitenpm run export -- --input <file> --out <dir>: deterministic export pipeline
npm run export -- --input ./examples/starter.design.json --out ./tmp/exportThis writes canonical JSON plus deterministic React + Tailwind output to ./tmp/export.
- Design on a canvas: insert frames, groups, shapes, text, images, icons, buttons, and charts
- Collaborate in real time: presence, cursors, selections, and edits sync across tabs in the same session
- Edit with precision: inspector controls for geometry, styling, and text
- Organize layers: search, rename, lock, hide, and reorder via drag and drop
- Move faster with guides: grid, alignment, and distribution snapping during drag
- Review changes: version history snapshots with restore
- Time travel: replay your edit timeline and branch from any point
- Prototype and preview: add hotspots and navigate flows in preview mode
- Comment in context: pinned threads with resolve and reopen
- Save, import, export: file menu actions plus CLI export to JSON and React + Tailwind
- Run
npm run dev - Copy the session link from the top bar
- Open the same link in a second tab
- Move objects in one tab and watch cursors, selections, and edits sync
- Make a few edits on the canvas
- Open the Replay tab in the left panel
- Scrub backward, change playback speed, and step frame by frame
- Use "Branch from here" to replace the live document with the selected frame
src/core/*: framework-agnostic model, ops, determinism, sync, replay, exportsrc/features/*: UI features (canvas, layers, inspector, prototype, comments, replay)src/app/*: app shell layout and wiringsrc/ui/*: shared UI primitivesserver/*: local WebSocket collaboration serverscripts/*: repo scripts, including the export CLIexamples/*: demo-ready design filesdocs/*: architecture and brand guidancedocumentation.md: concise operator guide kept in sync with the milestonesplans.md: source-of-truth execution plan and decision log
- Architecture overview:
docs/architecture.md - Working guide:
documentation.md - Milestones and decisions:
plans.md