Categorygithub.com/get-eventually/go-eventually
module
0.3.0-prerelease.4
Repository: https://github.com/get-eventually/go-eventually.git
Documentation: pkg.go.dev

# README


Eventually

Domain-driven Design, Event Sourcing and CQRS for Go


[!WARNING] Though used in production environment, the library is still under active development.

[!NOTE] Prior to v1 release the following Semantic Versioning is being adopted:

  • Breaking changes are tagged with a new minor release,
  • New features, patches and documentation are tagged with a new patch release.

Overview

eventually is a library providing abstractions and components to help you:

  • Build Domain-driven Design-oriented code, (Domain Events, Aggregate Root, etc.)

  • Reduce complexity of your code by providing ready-to-use components, such as PostgreSQL repository implementation, OpenTelemetry instrumentation, etc.

  • Implement event-driven architectural patterns in your application, such as Event Sourcing or CQRS.

How to install

You can add this library to your project by running:

go get -u github.com/get-eventually/go-eventually

Contributing

Thank you for your consideration ❤️ You can head over our CONTRIBUTING page to get started.

License

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in go-eventually by you, shall be licensed as MIT, without any additional terms or conditions.

# Packages

Package aggregate defines interfaces and types necessary to allow users to define their own Aggregate types.
Package command contains types and interfaces for implementing Command Handlers, necessary for producing side effects in your Aggregates and system, and implement your Domain's business logic.
Package event contains types and implementations for dealing with Domain Events.
Package firestore implements go-eventually interfaces (such as event.Store) using Google Cloud Firestore as backend.
Package message exposes the generic Message type, used to represent a message in a system (e.g.
Package opentelemetry provides extension components for eventually library to enable OpenTelemetry instrumentation.
Package postgres contains implementations of go-eventually interfaces specific to PostgreSQL, such as Aggregate Repository, Event Store, etc.
Package query provides support and utilities to handle and implement Domain Queries in your application.
Package serde contains interfaces used for serialization and deserialization throughout the eventually library.
Package version contains types and utilites to deal with Optimistic Concurrency.