GenesisDB is the open source and GDPR-ready event sourcing database for building event-driven apps.
Commit events, fetch streams, query, subscribe and erase. Plain JSON in, NDJSON out, no driver required. Use curl, any HTTP client or one of the SDKs.
curl localhost:8080/api/v2/commit \
-H "Authorization: Bearer $GENESISDB_AUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"events": [{
"source": "io.example.shop",
"subject": "/customer/42",
"type": "io.example.shop.customer-registered",
"data": { "name": "Bruce Wayne" }
}],
"preconditions": [
{ "type": "isSubjectNew", "payload": { "subject": "/customer/42" } }
]
}'Every event is SHA-256 chained to its predecessor. One request verifies the integrity of the whole store.
Fetch one stream or a whole branch, in commit order.
Erase personal data from reference payloads. Chain and audit trail stay intact.
Filters, ordering, grouping, aggregates, projections and subqueries. Also usable as a commit precondition.
STREAM e FROM events
WHERE e.type == 'order.placed'
GROUP BY e.data.category
MAP { orders: COUNT(), total: SUM(e.data.amount) }Typed clients with the same API everywhere: commit, fetch, query, subscribe, schemas and erasure. All MIT licensed.
npm install genesisdbgo get github.com/genesisdb-io/genesisdb-io-client-go/v2pip install genesisdb-clientcargo add genesisdbio.genesisdb:genesisdb:2.0.0.package(url: "github.com/genesisdb-io/genesisdb-io-client-swift")composer require genesisdb/client-sdkdotnet add package GenesisDB.ClientGenesisDB 2 is a drop-in replacement. Existing data directories migrate on first start, every 1.x backup restores and every 1.x route still answers. Your clients keep working. The migration is one-way, so as with every migration a backup of the data directory is mandatory before upgrading.
Upgrade guideNo editions, no license keys, no event limits. Read the code, run it anywhere, open issues and send pull requests. GenesisDB belongs to everyone who builds with it.
MIT licensed, drop-in compatible, free for everyone
Local instances without the setup pain
From signal to flow - aggregate event streams
GenesisDB running in under a minute
Start the container, commit an event, fetch it back. Five minutes, no signup.
docker run --rm --name genesisdb \
-e GENESISDB_AUTH_TOKEN="$(openssl rand -hex 32)" \
-p 127.0.0.1:8080:8080 \
-v genesisdb-data:/app/data \
genesisdb/genesisdb:latest