eskit — Event Sourcing toolkit for Go (open-source candidate) #1

Open
opened 2026-02-18 23:02:17 +00:00 by ash · 0 comments
Owner

eskit

Event sourcing library built on the decider pattern with Go generics.

Repo: https://git.nullsoft.is/ash/eskit

What it does

  • Decider pattern: Command → Decide(state, cmd) → []Event → Evolve(state, event) → State
  • Type-safe with Go generics
  • Pluggable event stores (memory, SQLite done; PostgreSQL, NATS planned)
  • Optimistic concurrency control
  • Snapshotting support
  • Zero dependencies for core (SQLite store uses modernc.org/sqlite)

Status

  • Core abstractions
  • In-memory store
  • SQLite store
  • Tests passing
  • README with examples
  • PostgreSQL store
  • NATS JetStream store
  • Projections / read models
  • Event upcasting

Open-source potential

Clean API, minimal dependencies, solves a real problem. Could be a solid alternative in the Go event sourcing space.

## eskit Event sourcing library built on the decider pattern with Go generics. **Repo:** https://git.nullsoft.is/ash/eskit ### What it does - Decider pattern: `Command → Decide(state, cmd) → []Event → Evolve(state, event) → State` - Type-safe with Go generics - Pluggable event stores (memory, SQLite done; PostgreSQL, NATS planned) - Optimistic concurrency control - Snapshotting support - Zero dependencies for core (SQLite store uses modernc.org/sqlite) ### Status - [x] Core abstractions - [x] In-memory store - [x] SQLite store - [x] Tests passing - [x] README with examples - [ ] PostgreSQL store - [ ] NATS JetStream store - [ ] Projections / read models - [ ] Event upcasting ### Open-source potential Clean API, minimal dependencies, solves a real problem. Could be a solid alternative in the Go event sourcing space.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ash/ideas#1
No description provided.