Skip to main content
Scribe is a single repository that produces a single deployable: one Cloudflare Worker serving the React client, the REST API, and the realtime layer.

Architecture

Local setup

1

Install and generate types

2

Configure secrets

Copy .dev.vars.example to .dev.vars and fill in your WorkOS credentials:
3

Run the dev server

The Vite dev server runs the Worker in workerd via the Cloudflare Vite plugin, so Durable Objects, D1, and R2 all work locally with the same code paths as production.

Tests and checks

The vacuum script extracts the live OpenAPI spec from the built Worker and lints it with vacuum — CI requires zero errors and zero warnings, so every endpoint ships with complete descriptions and examples. To regenerate the spec that powers this documentation’s API reference:

Deployment

CI (GitHub Actions) verifies every push — typecheck, lint, tests, build, and the vacuum spec gate — and deploys main to Cloudflare Workers after applying D1 migrations. Manual deploys are one command:
Everything ships as a single Worker: static client assets are served by the Workers assets pipeline (SPA fallback included), API and auth routes run worker-first, DOC_ROOM Durable Objects host the collaborative sessions, D1 holds relational data and the FTS5 search index, and R2 stores uploads. The production deployment lives at scribe.skeptrune.com on a custom domain route.