// the find
garden-co/classic-jazz
A new kind of database that's distributed across your frontend, containers, serverless functions and its own storage cloud.
Classic Jazz is the first-generation version of Jazz, a local-first distributed database that syncs CRDT-backed data across browser, server, and mobile with built-in E2E encryption. The README's opening line is a deprecation notice pointing you to Jazz v2 — this repo exists for existing users, not new projects. Worth looking at for the architecture, not adoption.
- The Rust core (cojson-core) compiled to WASM for browsers and NAPI for Node is a smart call: crypto and CRDT merge logic runs at native speed without shipping a separate binary, and the same Rust code targets React Native via C++ bridge.
- End-to-end encryption is structural, not bolted on — the group asymmetric key design (see .specs/group-asymmetric-key) means the sync server never sees plaintext, which is rare for databases that also handle sync.
- The internal .specs/ directory shows actual design docs with requirements, tasks, and delayed-reconcile-ack thinking — this isn't a project that cargo-cults CRDTs without understanding the edge cases.
- Multi-runtime story is real: browser WASM, Node NAPI, React Native C++ bridge, and edge-lite WASM all ship from the same Rust core, which is a genuine engineering achievement.
- Deprecated on arrival for new readers — the README's first line tells you to go elsewhere. Evaluating this for adoption is wasted time unless you're already running it.
- The build matrix is brutal: separate CI pipelines for NAPI (darwin-arm64, darwin-x64, linux-x64-gnu, linux-x64-musl, linux-arm64, linux-arm-gnueabihf) plus WASM plus React Native. Contributing or self-hosting the full stack requires Rust toolchain setup that most TypeScript teams won't have.
- No migration story visible in the tree — CRDTs don't have schema migrations the way SQL does, but when your CoMap shape changes across app versions you need a plan, and there's no evidence one exists beyond the CRDT merge itself.
- Jazz Cloud vendor dependency is real: self-hosting requires running the sync server yourself, and the docs for doing so appear to live on classic.jazz.tools rather than in the repo, which is a problem when the classic site eventually goes dark.