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-06-21ci(notify-docs): ping docs.paged.media to rebuild on source changeb1d62ce
- 2026-06-19feat(automation): agent capability catalog driver + authoring guide + system prompt (#2)9cb9717
- 2026-06-19feat(automation): document-generation API + engine bridge + data-merge (#1)9352422
- 2026-06-05M6: hardening — jobs queue, GDPR delete/export, account, observability5673abb
- 2026-06-05M5: content — Google Fonts proxy + Pexels/Unsplash meta-searchda39777
- 2026-06-05M4: money — Stripe webhooks, plan gates, quota enforcement575e67b
- 2026-06-05M3: files — UserStorage facade, streaming uploads, metadata layer3535e12
- 2026-06-05M2: identity — better-auth mount, session hook, dev login-as, seed60dbc29
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.