Learning in public — this reference is being written in the open. Unfinished pages are excluded from search engines.
paged.IDML Reference
The Paged Platform

Architecture

How paged fits together — the render engine at the core, the editor and server above it, the content plugins beside it, and the registry that tracks the whole system's state.

Tier: IntermediateIntermediateIIexplanation

In short one Rust render engine reads and renders IDML. Everything else consumes it across a package boundary: the editor (full editing) and the viewer (read-only) use its wasm; the server backs the editor's accounts and storage; five content plugins add new kinds of content; and a capability registry tracks what works across all of it.

The render pipeline

The engine (core) turns an IDML package into pixels through a fixed pipeline:

parse → scene → text → compose → GPU

Parse reads the ZIP + XML into a model; scene resolves spreads, frames, and story threading; text lays out with an InDesign-calibrated Knuth–Plass composer; compose emits a display list; and the GPU layer rasterizes it. Forward rendering is WebGPU (Vello); a CPU backend (tiny-skia) remains for headless fidelity testing. The renderer reference covers this in depth.

Who consumes the engine

The engine publishes wasm packages (@paged-media/canvas-wasm, introspect-wasm, idml-viewer). Consumers never take a source dependency:

  • Editorthe commercial app: full canvas, mutation, gestures, panels, and the paged.* scripting layer, running the engine in a Web Worker on an OffscreenCanvas.
  • Viewera slim, read-only WebGPU viewer (renderer-core only). It's both the community viewer and the docs live preview.
  • Editor-serverthe backend for accounts, storage, billing, and asset proxies; also drives the engine headlessly for document automation.

Extending the system

Content beyond IDML's native constructs comes from plugins — vector drawing, web (HTML/CSS), raster images, spreadsheets, and database publishing — built on the Plugin SDK contract.

Keeping everyone honest

The capability registry holds one row per capability with a per-layer status and a test-evidence overlay. Every repo's tests publish against it; this documentation reads from it. That's why the support badges throughout the IDML reference are live, not hand-kept.

The repositories

See Repositories for a per-repo tour, and How it's tested for the verification system.

On this page