KurrentDB Development Skill
Provides working code for KurrentDB (formerly EventStoreDB) - the event-native database.
When to Read Additional Files
| Need | Read |
|---|---|
| Full API reference for any language | reference.md |
| Ready-to-run project templates | templates/{language}/ |
Quick Reference
Docker Setup (Insecure Single Node)
bash
docker run --name kurrentdb-node -it -p 2113:2113 \
docker.kurrent.io/kurrent-latest/kurrentdb:latest \
--insecure --run-projections=All --enable-atom-pub-over-http
Or use docker-compose - see templates/docker-compose.yaml
Connection String: kurrentdb://localhost:2113?tls=false
Web UI: http://localhost:2113
Client Installation Quick Reference
| Language | Install Command |
|---|---|
| .NET/C# | dotnet add package KurrentDB.Client |
| F# | dotnet add package KurrentDB.Client |
| Java | Add com.eventstore:db-client-java:5.3.2 to pom.xml |
| Python | pip install kurrentdbclient |
| Node.js | npm install @kurrent/kurrentdb-client |
| Go | go get github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb |
| Rust | Add kurrentdb = "1.0" to Cargo.toml |
Key API Patterns
Optimistic Concurrency (CRITICAL)
ALWAYS use expected revision for aggregates:
- •
NO_STREAM- Creating new aggregate (stream must not exist) - •
StreamExists- Appending to existing stream - •Specific revision number - Prevent concurrent modifications
Subscriptions
- •Catch-up: Read history + live events. Use for projections.
- •Persistent: Server-managed with ACK/NACK. Use for reliable processing.
System Streams
- •
$ce-{category}- All events from streams matching pattern (e.g.,$ce-orderfororder-*) - •
$et-{eventType}- All events of a type (e.g.,$et-OrderCreated)