go-eventually

module
v0.3.0-prerelease.1 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2024 License: MIT

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.

Directories

Path Synopsis
Package aggregate defines interfaces and types necessary to allow users to define their own Aggregate types.
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 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.
core module
Package event contains types and implementations for dealing with Domain Events.
Package event contains types and implementations for dealing with Domain Events.
eventstore
postgres Module
Package firestore implements go-eventually interfaces (such as event.Store) using Google Cloud Firestore as backend.
Package firestore implements go-eventually interfaces (such as event.Store) using Google Cloud Firestore as backend.
internal
user
Package user serves as a small domain example of how to model an Aggregate using go-eventually.
Package user serves as a small domain example of how to model an Aggregate using go-eventually.
Package message exposes the generic Message type, used to represent a message in a system (e.g.
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 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 postgres contains implementations of go-eventually interfaces specific to PostgreSQL, such as Aggregate Repository, Event Store, etc.
internal
Package internal contains utilities and helper functions useful in the scope of eventually's postgres implementation.
Package internal contains utilities and helper functions useful in the scope of eventually's postgres implementation.
Package serde contains interfaces used for serialization and deserialization throughout the eventually library.
Package serde contains interfaces used for serialization and deserialization throughout the eventually library.
serdes module
Package version contains types and utilites to deal with Optimistic Concurrency.
Package version contains types and utilites to deal with Optimistic Concurrency.

Jump to

Keyboard shortcuts

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