learn
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.

FilePurpose
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.jsonWorkspace scripts and dependencies.
vitest.config.tsTest runner config.

Dependencies

LibraryVersion rangeWhy it is used here
Next.js16.3.5Serves the editor, dashboard, and room pages.
React19.2.8Renders the editor, dashboard, and room interface.
React DOM19.2.8Renders React trees into the browser document.
JotaiDeclared but not used in source^3.0.1Declared in apps/web but never imported in source.
Development and tooling (9)
LibraryVersion rangeWhy it is used here
@types/node^20Type declarations for Node.js built-ins.
@types/react^19Type declarations for React.
@types/react-dom^19Type declarations for React DOM.
TypeScript^5Compiles the workspace and type-checks every package.
Tailwind PostCSS plugin^4Wires Tailwind into the Next.js PostCSS build.
Tailwind CSS^4Utility styles for the editor stylesheets.
Vitest^5.0.1Runs the unit and regression test suites.
ESLint^9Lints the codebase from the shared configs.
Next.js ESLint config16.3.5Next.js lint rules for the web app.

Dependencies as of commit b0026d9.

Internal packages used

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)

On this page