penpot /

Penpot

Live map
Snapshotdevelop · 59ef076

ClojureScript workspace events update shared file data, synchronize through backend RPC and messaging, and render through WebAssembly.

Click a building or route
Choose a path

Persist a local change and fan it out to another workspace.

System map8 components · 9 connections
130%
Penpot: collaborative design state becomes a rendered canvas architectureStart in the workspace UI, follow an edit through frontend state and backend persistence, then inspect collaboration and WASM rendering.tool event and selectionfile ID, revision, and…authenticated command …file data, revision, a…file topic and change …presence or file-chang…remote revision and op…Backend RPCWorkspace UIWorkspacestateFile commandsWASM rendererPostgreSQLstoreWebSocketgatewayMessage bus
Connections
BuildingsEntryServiceComputeStorageRuntimeToolingExternal

Terms, in plain English

Change setAn ordered collection of operations applied to a Penpot file revision.

How to study this repo

  1. 1
    Create one change

    Follow a workspace interaction into its local change-set event.

  2. 2
    Persist and publish

    Trace file update RPC through PostgreSQL and the message bus.

  3. 3
    Cross into WASM

    Inspect how shapes and viewport state feed the renderer.