Announcing EventStore Client for Dart
We are pleased to announce the first EventStore Client for Dart, a high quality and community developed dart package that brings the industry leading event sourcing capabilities of EventStoreDB to the community of Dart and Flutter developers!
As a community we are committed to make this client fully compliant with all EventStoreDB gRPC Client APIs. We are not there yet though, so make sure you watch and star the repository on GitHub to keep updated!
What is EventStoreDB?
EventStoreDB is an open-source, functional database built for event sourcing and complex event processing capabilities. It supports consistent reading and idempotent appending of events with optimistic concurrency to individual streams. This allows you to build systems with consistency guaranteed by EventStoreDB. For more information about event sourcing, see The Beginner's Guide to Event Sourcing.
Which features are supported?
As of version 0.2.1 all core features are supported, which include
- Reading and appending events to streams
- Managing subscriptions on streams
- Managing projections for complex event processing
- Managing persistent subscriptions for competing consumers
All of the administration apis for users, access control, operations and monitoring are still in progress. You can follow the progress and roadmap on Github.
Our strategy for implementation in Dart
We have to a large extent structured code and named classes, methods and parameters the same as in the official client in C# so that the official documentation and our implementation align. Dart has excellent support for async/await and streams however, so when it is appropriate, we opt for code patterns native to Dart when patterns in C# does not yield effective Dart code.
Getting started
We are working on an introduction to event sourcing in dart. In the meanwhile, this is how you get started with EventStore Client in Dart:
- Create a a single node or cluster in EventStore Cloud (or deploy your own)
- Create an appropriate connection string
- Add dependency
eventstore_client: ^0.2.1
to pubspec.yaml - Create an instance of EventStoreClient with given connection string
And you are ready for event sourcing all-the-things!
We love contributions and feedback
DISCO Open Source is a small community of highly devoted developers and subject experts. We built this client for another project, but we thought that sharing the implementation with the Dart and Flutter community was the best option. Any contributions or feedback is highly appreciated!