Skip to content

goes

Event-Sourcing Framework for Go

Build distributed, event-sourced applications with type-safe aggregates, commands, and projections.

🚀

Event-Sourced Aggregates

Embed a base type, register typed event handlers, and let the framework handle versioning, persistence, and replay.

🔌

Distributed Events

Publish and subscribe to events with NATS or use MongoDB and PostgreSQL as event stores. Swap backends without changing application code.

🧠

Type-Safe Commands

Dispatch and handle commands with full generic type safety. Synchronous or asynchronous — your choice.

🛠️

Projection Toolkit

Build read models with continuous or periodic schedules. Automatic progress tracking, debouncing, and startup catch-up.

📦

Codec Registry

Map event names to Go types for automatic serialization. JSON by default, swap to MessagePack or Protobuf with one option.

📸

Snapshots

Capture aggregate state at a point in time. Replay only recent events instead of the full history.

Testable

Fluent test assertions for aggregates, in-memory backends for integration tests, and conformance suites for custom implementations.

🦾

Modular Design

Use only what you need — the event system, commands, projections — and adopt more components as your project grows.

🔋

Batteries Included

MongoDB, PostgreSQL, and NATS backends ready to go. In-memory implementations for testing. Zero external dependencies for prototyping.