← Alle plattformer

Hurtigstart for Kotlin og Java

Når du er ferdig med denne siden, har du et Kotlin-program som oppretter et ende-til-ende-kryptert dokumentlager, skriver en oppgave og leser den inn igjen. Den samme klienten fungerer fra Java, Spring, Ktor eller enhver annen JVM-backend.

Slik fungerer det

JVM-klienten styrer den ekte MindooDB-motoren, som kjører i en liten Node.js-sidecar på samme maskin. De snakker sammen over en autentisert loopback-WebSocket, og hver brukerøkt får sin egen prosess, slik at dekrypterte nøkler aldri blandes. Kryptering, signaturer, synkronisering og tilgangskontroll er den samme koden som kjører i Node.js, nettlesere og React Native.

1) Hent klienten og sidecaren

Du trenger JDK 21+ og Node.js 22.13+. Klon begge prosjektene ved siden av hverandre og bygg sidecaren:

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 ..

Legg deretter klienten til i Gradle-bygget ditt, for eksempel som inkludert bygg i 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) Opprett Main.kt

Sidecar.start starter motoren. createTenant genererer alle kryptografiske nøkler og registrerer den første brukeren i ett steg. Deretter åpner vi en økt, oppretter et dokument og leser det inn igjen — hver endring signeres og krypteres før den lagres.

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) Kjør

./gradlew run

Forventet utdata:

Loaded todo: {"_attachments":[],"done":false,"title":"Buy milk"}
Nå har du et lokalt, ende-til-ende-kryptert dokumentlager på JVM. Hver endring signeres kryptografisk og krypteres før den lagres.