editor-server — the backend
The TypeScript REST backend for the editor — Fastify + SQLite/Drizzle + better-auth + Stripe — handling accounts, storage, billing, asset proxies, and headless document automation.
In short editor-server is the backend behind the editor —
a Fastify 5 modular monolith on SQLite (Drizzle) with better-auth sessions and
Stripe billing. It's offline-first: every external service is optional and
env-gated.
What it does
- Auth (better-auth sessions), account profiles, storage with per-user isolation, billing (Stripe webhooks + plan gating), fonts (Google Fonts proxy) and images (Pexels/Unsplash search) proxies, and a background jobs queue (GDPR export/delete, TTL cleanup).
- Document automation — a brief → agent job → engine → export pipeline that
drives the engine's headless
paged-runover a stdio bridge, plus a data-merge bridge to the data plugin.
How it's organized
src/modules/* (one Fastify plugin per domain), src/contracts/ (Zod schemas —
the OpenAPI source of truth), src/db/ (SQLite + migrations). The full REST
surface is documented, generated from its spec, on the
REST API page.
Recent activity
- 2026-10-18README: moved to paged-media/paged (apps/server) [skip ci]c47b127
- 2026-10-18paged.server: core crates pinned to core main (b612da5d)4c59433
- 2026-10-18docs: concept phases with their status2d368a2
- 2026-10-18docs: ADR 953 (the headless engine lane); 954 listed as a deferred proposal0e1d05c
- 2026-10-18paged.server: the headless lane — engine tools with no editor taba6506fb
- 2026-10-18Public repository: license files, CLAUDE.md for the Rust server, publication pass4702a6b
- 2026-10-18paged.server: R2 objects deflated before they are sealedf754188
- 2026-10-18paged.server: sealed at rest, collection, backup snapshots, erasure0c1e80b
editor — the editing frontend
The commercial desktop-publishing frontend — a React shell driving the engine wasm in a Web Worker on an OffscreenCanvas, with panels, gestures, scripting, and plugin integration.
viewer — the slim viewer
The public, read-only WebGPU IDML viewer — renderer-core only, no editing. Both the community viewer and the docs live-preview component.