Get Started / Web
Browser quickstart
Use the browser entrypoint and Web Crypto adapter.
1) Install
npm init -y
npm install mindoodb 2) Use in your web app
import {
BaseMindooTenantFactory,
InMemoryContentAddressedStoreFactory,
KeyBag,
createCryptoAdapter,
} from "mindoodb/browser";
async function runWebTodoDemo() {
const cryptoAdapter = createCryptoAdapter();
const storeFactory = new InMemoryContentAddressedStoreFactory();
const factory = new BaseMindooTenantFactory(storeFactory, cryptoAdapter);
const user = await factory.createUserId("CN=web-todo-user/O=demo", "user-password");
const keyBag = new KeyBag(user.userEncryptionKeyPair.privateKey, "user-password", cryptoAdapter);
const adminSigning = await factory.createSigningKeyPair("admin-password");
const adminEncryption = await factory.createEncryptionKeyPair("admin-password");
const tenant = await factory.createTenant(
"web-todo-tenant",
adminSigning.publicKey,
adminEncryption.publicKey,
"tenant-password",
user,
"user-password",
keyBag
);
const db = await tenant.openDB("todos");
const todo = await db.createDocument();
await db.changeDoc(todo, async (d) => {
const data = d.getData();
data.title = "Ship web MVP";
data.done = false;
});
const ids = await db.getAllDocumentIds();
const loaded = await db.getDocument(ids[0]);
return loaded.getData();
}
runWebTodoDemo().then((data) => {
console.log("Web todo:", data);
document.getElementById("app").textContent = `Todo: ${data.title} (done: ${String(data.done)})`;
}); Expected console output: Web todo: { title: 'Ship web MVP', done: false }