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.