| name | kurrentdb |
| description | Provides KurrentDB (EventStoreDB) client code for event sourcing and CQRS. Generates correct package names, connection strings, and API patterns for Python, Node.js, .NET, F#, Go, Java, Rust. Triggers on "kurrentdb", "eventstore", "event sourcing", "append events", "read stream", "subscription", "aggregate", "CQRS". |
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)
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)