// the find
looplab/eventhorizon
Event Sourcing for Go!
Event Horizon is a CQRS/ES toolkit for Go that gives you the building blocks — command handlers, event stores, projections, sagas, and an outbox pattern — without dictating your full architecture. It's for Go developers building event-sourced systems who want a structured framework rather than rolling their own from scratch. The API stability warning in the README is genuine; this is not a set-and-forget dependency.
The backend adapter coverage is genuinely good: MongoDB (two strategies with different tradeoffs documented), Redis, NATS JetStream, Kafka, and GCP Pub/Sub all have first-party implementations with acceptance test suites you can run against your own storage. The middleware layering for command handlers (locking, scheduling, async, validation) is composable and covers the awkward cases most CQRS tutorials skip. The outbox pattern implementation is included and tested — not an afterthought. Two worked examples (guestlist and a full TodoMVC with Elm frontend) show the framework end-to-end, which is more than most comparable libraries bother with.
The 'API is not final' warning has been in the README for years and the project is at 1.6k stars — that's a real adoption risk, not boilerplate caution. PostgreSQL support is entirely third-party (eh-pg), which is a gap for anyone not using MongoDB. The MongoDB v1 store has a silent 16MB aggregate document limit that will only bite you in production with high-churn aggregates — this deserves more than a parenthetical in the README. Snapshot support exists as an interface but the built-in stores don't all implement it consistently, so replaying large aggregates from scratch remains your problem.