Get Started

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.

Developers: ship an encrypted sync feature in an afternoon
🔒 Security-minded: servers never see plaintext or hold keys
Decision makers: one SDK, three runtimes, zero plaintext on the wire
Choose your runtime

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.

Copy & run

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.

Cross-platform sync

How it all connects

Node.js
Node.js Server
Web Browser
Web Browser
React Native
React Native App
🔒 MindooDB Sync Server — stores & relays ciphertext, never sees plaintext

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 →