apps/
Web
Next.js editor, account dashboard, and room access interface.
Guest drawings stay on the device in IndexedDB. Signed-in work goes through the room sync orchestrator, which keeps a shared room connection, an IndexedDB draft, and a persistent outbox of committed edits. Committed edits are durable; cursor positions, previews, selections, and laser trails are ephemeral frames that are never stored.
What it owns
- The drawing editor and its toolbar, canvas, and panels
- Account and dashboard pages (scenes, rooms, invitations)
- Room pages with live presence, previews, and selections
- IndexedDB persistence: autosave, drafts, and the sync outbox
Files
File list and purposes from the folder README.
| File | Purpose |
|---|---|
src/ | Editor, dashboard, and room interface source. |
src/lib/sync/ | Room sync orchestrator, commit outbox, previews, and reconciliation. |
src/lib/persistence/ | Autosave, IndexedDB access, imports, and exports. |
src/components/ | Canvas, editor, toolbar, presence, dashboard, and room UI. |
src/hooks/ | Canvas, dashboard, and sync hooks. |
public/ | Static assets. |
package.json | Workspace scripts and dependencies. |
vitest.config.ts | Test runner config. |
Dependencies
| Library | Version range | Why it is used here |
|---|---|---|
| Next.js | 16.3.5 | Serves the editor, dashboard, and room pages. |
| React | 19.2.8 | Renders the editor, dashboard, and room interface. |
| React DOM | 19.2.8 | Renders React trees into the browser document. |
| JotaiDeclared but not used in source | ^3.0.1 | Declared in apps/web but never imported in source. |
Development and tooling (9)
| Library | Version range | Why it is used here |
|---|---|---|
| @types/node | ^20 | Type declarations for Node.js built-ins. |
| @types/react | ^19 | Type declarations for React. |
| @types/react-dom | ^19 | Type declarations for React DOM. |
| TypeScript | ^5 | Compiles the workspace and type-checks every package. |
| Tailwind PostCSS plugin | ^4 | Wires Tailwind into the Next.js PostCSS build. |
| Tailwind CSS | ^4 | Utility styles for the editor stylesheets. |
| Vitest | ^5.0.1 | Runs the unit and regression test suites. |
| ESLint | ^9 | Lints the codebase from the shared configs. |
| Next.js ESLint config | 16.3.5 | Next.js lint rules for the web app. |
Dependencies as of commit b0026d9.
Internal packages used
Laying out web folder…
BrowserAPIRealtimeCacheDatabaseShareddurableephemeral
Talks to
Sources: apps/web/README.md, apps/web/src/README.md, apps/web/src/lib/sync/README.md, apps/web/src/lib/sync/roomSync.ts, apps/web/src/lib/sync/outbox.ts, apps/web/src/lib/sync/commits.ts, apps/web/src/lib/persistence/README.md (documented at commit b0026d9)