One SDK. Every platform.
Encrypted sync everywhere.
MindooDB runs on Node.js servers, web browsers, and React Native mobile apps — all syncing through the same end-to-end encrypted protocol. Pick your platform and build your first synced document in minutes.
Platform guides
Each guide walks you from install to a working synced document. All three runtimes speak the same protocol and can sync with each other.
Quickstart: tenant, document, sync
One call creates the tenant with admin + user keys, KeyBag, and directory registration. This is the same code on every platform — only the import path changes.
import {
BaseMindooTenantFactory,
InMemoryContentAddressedStoreFactory,
} from "mindoodb";
const storeFactory = new InMemoryContentAddressedStoreFactory();
const factory = new BaseMindooTenantFactory(storeFactory);
// 1) Create tenant — generates admin + user keys, KeyBag, and directory
const { tenant, adminUser, appUser, keyBag } = await factory.createTenant({
tenantId: "acme",
adminName: "cn=admin/o=acme",
adminPassword: "admin-password",
userName: "cn=alice/o=acme",
userPassword: "alice-password",
});
// 2) Create a document
const db = await tenant.openDB("contacts");
const doc = await db.createDocument();
await db.changeDoc(doc, (d) => { d.getData().name = "John Doe"; });
// 3) Publish tenant to server + push encrypted changes
await tenant.publishToServer("https://sync.acme.com", {
registerUsers: [factory.toPublicUserId(appUser)],
});
const remote = await tenant.connectToServer("https://sync.acme.com", "contacts");
await db.pushChangesTo(remote); Want to add a second user? See How It Works for the full multi-user join flow.
How it all connects
Every MindooDB client — whether running on a Node.js backend, a web frontend, or a React Native app — speaks the same encrypted sync protocol. The server stores and relays ciphertext without ever seeing plaintext. Users can work offline and sync seamlessly when connectivity returns.
See the full multi-user walkthrough →