Skip to content

Releases: thatsme/scriba

Release list

v0.1.0

Choose a tag to compare

@thatsme thatsme released this 11 Jun 13:25

Scriba is a projection engine for Elixir event-sourced systems. It pulls events from a source, routes them to your handle/2 callbacks in per-stream order, and commits the results atomically with position tracking inside a single Ecto.Multi. Designed to pair with Commanded.

This is the first release. The architectural contract is frozen and the operational primitives — telemetry, dead-letter routing, retry, real pause/resume — are in place. Deferred by design: lag/throughput dashboard (v0.2), online rebuild and atomic swap (v0.3), non-Commanded sources and non-Ecto targets (v0.4).

Installation

Not yet on Hex — until the package is published, depend on the repo directly:

{:scriba, github: "thatsme/scriba", tag: "v0.1.0"}
# after Hex publication: {:scriba, "~> 0.1.0"}

Highlights

  • Five-line API — declare a projection with use Scriba.Projection, write handle/2 clauses.
  • Atomic commits — read-model write and position update land in one Ecto.Multi; no torn state after a crash.
  • Per-stream ordering — consistent-hash partitioning keeps each stream serial, parallelizes across streams.
  • Dead-letter + retry — failures route to scriba_dead_letters with the cursor advancing (skip-and-continue), after configurable exponential-backoff retries.
  • Real pause/resume — held demand, no event loss.
  • Nine telemetry events — handler, batch, dead-letter, lifecycle, cache-init.
  • Effectively-once under crash — source-side dedup, property-tested against real Postgres.

Documentation

On the roadmap for v0.2: lag and throughput metrics with a LiveView dashboard.