Skip to content

What is datadata?

datadata is a sync engine where everything — including the schemas — is a document. In sync-engine terms, that makes it a server-authoritative document sync engine: clients subscribe to documents, edit them optimistically, and an authoritative server orders, validates, and broadcasts every change in real time. Offline edits replay on reconnect, and an opt-in persistence adapter carries both writes and reads across a reload — but there is no distributed merge for structured data: the server stays in charge, by design.

The name is a working title.

datadata is a TypeScript library, not a hosted service. It currently consists of:

  • The core library — client, server, live and staged sessions, the schema and presence systems, and an in-process transport, with no opinion about where each side runs.
  • A Cloudflare backend — runs the server inside a Durable Object with SQLite storage and WebSocket transport. This is the production deployment shape; see Architecture.
  • A Node + Postgres backend — the same server behind a Postgres storage adapter and a Node WebSocket host, serving many folders from one database. It passes the same conformance suites as the Cloudflare backend but has not run in production, and its only Postgres driver so far is the embedded PGlite; see Node + Postgres deployment.
  • Object stores for files — R2, S3-compatible, and filesystem adapters for the blob lane, all conformance-tested.
  • React bindings — a Jotai-based integration for subscribing to documents from React components.
  • React components — utility editor and viewer components for exercising a session in an app, kept apart from the bindings.
  • Devtools — a panel for inspecting live documents, subscriptions, and pending optimistic updates.

Everything is a document: a typed JSON value with a server-assigned sequence number. Structured changes travel as JSON Patch; collaborative text lives in embedded Yjs documents. Schemas are themselves documents, editable through the same API as user data. On top of the live client sits the staged session: a staging area where a human or an AI agent accumulates changes, previews conflicts against the live head, and commits atomically.