goes

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 11, 2022 License: MIT

README

goes - Event-Sourcing Toolkit

Go Reference

This documentation is a work in progress. If you need help understanding the components of this library, feel free open an issue or start a discussion. Feedback is always welcome.

The generics branch will be merged into main with Go 1.18, so the API will also change a bit to make use of generics.

goes is a collection of interfaces, tools and backend implementations that allow you to write event-sourced applications in Go.

Introduction

This documentation assumes knowledge of

  • Event-Sourcing,
  • Domain-Driven Design,
  • and CQRS.

Please make yourself familiar with these concepts before reading further.

Features
To-Do
  • Testing Tools
    • Aggregates
    • Commands
    • Projections
  • Development Tools
    • Code Generators (?)
    • Event Store CLI/UI
    • Projection CLI/UI
  • Documentation
    • Examples / Guides
  • Generics
    • Helpers
    • codec.Registry
    • event.Event (?)
    • command.Command (?)

Getting Started

Installation
go get github.com/modernice/goes
Examples

A full example of an app can be found here. (To-Do)

Guides

Components

goes consists of multiple components that, when used together, provide a CQRS and Event-Sourcing framework/toolkit. Read a component's README for usage guides.

Event System

github.com/modernice/goes/event

goes defines and implements a unified event system for both application events and aggregate events.

Aggregates

github.com/modernice/goes/aggregate

goes provides utilities to create event-sourced aggregates that build on top of the event system.

Command System

github.com/modernice/goes/command

goes implements a distributed command bus that communicates between processes over the event system.

Projections

github.com/modernice/goes/projection

The projection package provides utilities for creating and managing projections over events.

SAGAs

github.com/modernice/goes/saga

The saga package implements a SAGA coordinator / process manager for more complex multi-step transactions.

Backends

Event Bus
Event Store

Contributing

TBD (Contributions welcome)

License

MIT

Directories

Path Synopsis
mocks
Package mock_aggregate is a generated GoMock package.
Package mock_aggregate is a generated GoMock package.
ref
Package ref provides utilities for working with aggregate.Ref.
Package ref provides utilities for working with aggregate.Ref.
snapshot/mocks
Package mock_snapshot is a generated GoMock package.
Package mock_snapshot is a generated GoMock package.
tuple
Deprecated: Use github.com/modernice/goes/aggregate/ref instead
Deprecated: Use github.com/modernice/goes/aggregate/ref instead
api
proto module
backend
nats
Package nats provides an event bus that uses NATS to publish and subscribe to events over a network with support for both NATS Core and NATS JetStream.
Package nats provides an event bus that uses NATS to publish and subscribe to events over a network with support for both NATS Core and NATS JetStream.
testing/eventbustest
Package eventbustest tests event bus implementations.
Package eventbustest tests event bus implementations.
cli
cmd
goes command
cmdbus
Package cmdbus provides a distributed & event-driven Command Bus.
Package cmdbus provides a distributed & event-driven Command Bus.
mocks
Package mock_command is a generated GoMock package.
Package mock_command is a generated GoMock package.
eventbus/natsbus
Package natsbus provides an event.Bus implementation with support for both NATS Core and NATS Streaming as the backend.
Package natsbus provides an event.Bus implementation with support for both NATS Core and NATS Streaming as the backend.
eventstore/mongostore
Package mongostore provides a MongoDB event.Store.
Package mongostore provides a MongoDB event.Store.
mocks
Package mock_event is a generated GoMock package.
Package mock_event is a generated GoMock package.
query
Package query provides an event query builder.
Package query provides an event query builder.
query/time
Package time provides time constraints for queries.
Package time provides time constraints for queries.
query/version
Package version provides version constraints for queries.
Package version provides version constraints for queries.
examples
todo module
helper
internal
env
xevent/etree
Package etree provides a red-black tree for events.
Package etree provides a red-black tree for events.
mock_test
Package mock_test is a generated GoMock package.
Package mock_test is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL