Announcing EventStore Client for Dart

Kenneth Gulbrandsoy
DISCOOS
Published in
2 min readSep 3, 2021

--

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!

EventStore + Dart = pub.dev loves it

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:

  1. Create a a single node or cluster in EventStore Cloud (or deploy your own)
  2. Create an appropriate connection string
  3. Add dependency eventstore_client: ^0.2.1to pubspec.yaml
  4. 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!

--

--