Giter VIP home page Giter VIP logo

es4j's Introduction

Build Status Maven Central Download Join the chat at https://gitter.im/eventsourcing/eventsourcing

logo Eventsourcing for Java

Keep the past, because predicting future is hard

Instead of mutating data in a database, Eventsourcing stores all changes (events) and what caused them (commands). To make this data useful, Eventsourcing builds indices over it.

This helps developing applications faster because there is no need to worry about designing the right domain models upfront (or as close to right as possible). By keeping all the commands and events, we can enrich or change our domain models over time with very little friction. Furthermore, this approach removes a need to have a one and only domain model for every entity. We experience the world and reality in different ways, depending on circumstances and points of view, and our programs should be able to reflect that.

To learn more about what kind of problems ES4J addresses, please read Why Use Eventsourcing Database

Key benefits

  • Domain model flexibility
  • Late domain model binding
  • Persistence of causal information
  • Serializable conflict resolution
  • Audit trail logging
  • Mapping application functionality

Key features

  • Strongly typed schemas
  • Event migrations
  • Domain protocols
  • Batteries included (shared event languages)
  • Basic support for Kotlin
  • Causality-preserving Hybrid Logical Clocks
  • In-memory, server (PostgreSQL) and on-disk (H2/MVStore) storage
  • Locking synchronization primitive
  • JMX-based introspection and management

Presentation

You can find our current slide deck at https://eventsourcing.com/presentation

Downloading and installing

To start using ES4J, please follow the installation instructions.

Documentation

Documentation can be found at es4j.eventsourcing.com

We strive to specify the building blocks behind Eventsourcing and its ecosystem as succinct specifications, you can find the current list of them at rfc.eventsourcing.com

Roadmap

As this project is striving to be a decentralized, contributors-driven project governed by the C4 process, there is no central roadmap per se. However, individual contributors are free to publish their own roadmaps to help indicating their intentions. Current roadmaps available:

Also, there's a centralized list of reported issues. These do not imply an actual roadmap, just what has been reported.

Contributing

Contributions of all kinds (code, documentation, testing, artwork, etc.) are highly encouraged. Please open a GitHub issue if you want to suggest an idea or ask a question.

We use Unprotocols C4 process. In a nutshell, this means:

  • We merge pull requests rapidly (try!)
  • We are open to diverse ideas
  • We prefer code now over consensus later

For more details, please refer to CONTRIBUTING

Related projects

  • es4j-graphql A Relay.js/GraphQL adaptor for ES4J-based applications.

es4j's People

Contributors

yrashk avatar ddvinyaninov avatar adymitruk avatar hastebrot avatar fluffypony avatar gitter-badger avatar

Watchers

BSRK Aditya avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.