Releases: thatsme/scriba
Releases · thatsme/scriba
Release list
v0.1.0
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, writehandle/2clauses. - 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_letterswith 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
- README — getting started
- SCRIBA_ARCHITECTURE.md — the design contract
- examples/bank/ — a working end-to-end Commanded + Ecto demo
On the roadmap for v0.2: lag and throughput metrics with a LiveView dashboard.