- Go WASM engineowns the scene graph, evaluates timelines, compiles draw commands
- Canvas2D frontend executes the command buffer (GPU-accelerated by the browser)
- Go backend handles collaboration, persistence, and video encoding via ffmpeg
- Operation-based document model - every mutation is an operation that supports undo/redo and real-time sync
We chose a command buffer architecture (engine emits draw commands, browser rasterizes) over Figma-style pixel rendering in WASM. Canvas2D is already GPU-accelerated, and Go's WASM ecosystem doesn't have a battle-tested software rasterizer. This gives us hardware rendering for free while keeping the engine deterministic.