Map data model

Saved maps are persisted as structured JSON snapshots (layers, grids, placements, brushes) keyed to your account. This is intentionally separate from flattened PNG pixels: you can revise the living map and re-export when the adventure changes.

Browser runtime

  • WebGL2 canvas: The editor renders on GPU; CPUs without usable WebGL2 will not meet the intended experience.
  • No install: The client is fetched as static assets plus WASM/JS bundles; gameplay prep still happens offline-capable once loaded.
  • Shortcut truth: Press H in-editor for authoritative keybindings—they may diverge slightly from screenshots as builds ship.

Autosave & API

Periodic autosave persists dirty maps; manual save uses familiar Ctrl/ + S. Conflicting writes can return HTTP 409 so edits are never silently overwritten—reload and reconcile intentionally.

Exports & sidecars

PNG export produces a tabletop-usable raster. Some builds emit lightweight sidecar metadata to keep project handoff orderly; always validate grid sizing inside your VTT—there is no universal import contract across vendors.

Hosting & environment

Self-host operators should mirror production secrets documented in repository env templates: database path, cookie keys, OAuth/Stripe toggles, and a stable PUBLIC_BASE_URL so canonical URLs and outreach links never drift to localhost in customer-facing surfaces.