FS2-ES

This project is not actively maintained as of October 2021, and should be avoided for new projects at this time. If you are looking for event-sourcing needs in the Typelevel ecosystem, please check out edomata instead.

Sonatype Nexus (Releases) Gitter

This is a small library to encode event-sourcing patterns using FS2, a streaming library in Scala. The library is polymorphic using Cats Effect, so you can use it with any effect type you want that implements cats.effect.Concurrent.

To use, add the library to your build.sbt like so:

libraryDependencies += "dev.rpeters" %% "fs2-es" % "<latest-version>"
libraryDependencies += "dev.rpeters" %% "fs2-es-testing" % "<latest-version>" //Test module

Currently Scala 2.12 and 2.13 are both supported. Project is built for Scala JVM and ScalaJS 1.4+.

Features

This library has three core focuses:

  • State Management - Use "EventState" to model event-driven state that is safe, concurrent, and with no boilerplate.
  • Event Sourcing - Manage entities using event sourcing patterns with "EventStateCache", a standard repository interface.
  • Test Utilities - Utilize time-travel debugging features and other goodies to analyze your state as it changes.

Click any of the links above to go to the relevant parts of the documentation on our microsite.

API Docs