← Alle platforms

Snelstart voor Kotlin en Java

Aan het eind van deze pagina heb je een Kotlin-programma dat een end-to-end versleutelde documentopslag aanmaakt, een taak schrijft en die weer inleest. Dezelfde client werkt vanuit Java, Spring, Ktor of elke andere JVM-backend.

Zo werkt het

De JVM-client stuurt de echte MindooDB-engine aan, die in een kleine Node.js-sidecar op dezelfde machine draait. Ze praten via een geauthenticeerde loopback-WebSocket, en elke gebruikerssessie krijgt een eigen proces, zodat ontsleutelde sleutels nooit door elkaar raken. Versleuteling, handtekeningen, synchronisatie en toegangscontrole zijn dezelfde code als in Node.js, browsers en React Native.

1) Haal de client en de sidecar op

Je hebt JDK 21+ en Node.js 22.13+ nodig. Kloon beide projecten naast elkaar en bouw de sidecar:

git clone https://github.com/klehmann/mindoodb-jvm-bridge.git
git clone https://github.com/klehmann/mindoodb-kmp-client.git

cd mindoodb-jvm-bridge && npm install && npm run build && cd ..

Voeg de client daarna toe aan je Gradle-build, bijvoorbeeld als included build in settings.gradle.kts:

// settings.gradle.kts
includeBuild("../mindoodb-kmp-client")

// build.gradle.kts
dependencies {
    implementation("com.mindoo.db:mindoodb-kmp-client:0.0.1")
}

2) Maak Main.kt aan

Sidecar.start start de engine. createTenant genereert alle cryptografische sleutels en registreert de eerste gebruiker in één stap. Daarna openen we een sessie, maken we een document aan en lezen we het weer in — elke wijziging wordt ondertekend en versleuteld voordat ze wordt opgeslagen.

import com.mindoo.db.bridge.*
import java.nio.file.Paths
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    // Starts the Node.js sidecar that runs the MindooDB engine
    val sidecar = Sidecar.start(
        Paths.get("../mindoodb-jvm-bridge/dist/index.js"),
        Paths.get("./mindoodb-data"),
    )

    // One call creates admin + user keys, KeyBag, and directory
    MindooDBBridge.createTenant(
        sidecar.endpoint,
        tenantId = "my-first-tenant",
        adminName = "cn=admin/o=demo", adminPassword = "admin-password",
        userId = "cn=alice/o=demo", password = "user-password",
        databases = listOf("todos"),
    )
    val session = MindooDBBridge.openSession(
        sidecar.endpoint, "my-first-tenant", "cn=alice/o=demo",
        "user-password", listOf("todos"),
    )

    // Create a todo document and read it back
    val todos = session.database("todos")
    val todo = todos.documents.create(mapOf("title" to "Buy milk", "done" to false))
    println("Loaded todo: " + todos.documents.get(todo.id).data)

    session.close()
    sidecar.stop()
}

3) Uitvoeren

./gradlew run

Verwachte uitvoer:

Loaded todo: {"_attachments":[],"done":false,"title":"Buy milk"}
Je hebt nu een lokale, end-to-end versleutelde documentopslag op de JVM. Elke wijziging wordt cryptografisch ondertekend en versleuteld voordat ze wordt opgeslagen.