<commit_before>#+TITLE: Rill Event Sourcing Toolkit

A Clojure foundation for CQRS/Event Sourcing.

* This is an alpha release.

We are using Rill in production but things are still in flux. Breaking
changes to the API are likely, though we have every intention of
making upgrades straightforward.

Documentation is missing for almost everything.

* Rill provides protocols and/or implementations for:

** EventStore

   The *system of record* in an Event Sourcing architecture; a
   collection of event streams with provisions for appending and
   retrieving events.

   Rill provides two complete implementations of the EventStore
   protocol; an ephemeral, in-memory store for testing/development,
   and a durable implementation using Postgresql as a backing store.

** Repository

   Aggregate storage implemented on top of an EventStore. Aggregates
   are implemented as reductions of event streams.

** Command handler

   Rill implements a fairly simple command -> repository -> aggregate
   -> events loop for evaluating commands and storing the resulting
   events in the event store. Synchronous event triggers are<commit_msg>Document leiningen dependencies<commit_after>#+TITLE: Rill Event Sourcing Toolkit

A Clojure foundation for CQRS/Event Sourcing.

* This is an alpha release.

  We are using Rill in production but things are still in flux. Breaking
  changes to the API are likely, though we have every intention of
  making upgrades straightforward.

  Documentation is missing for almost everything.

* Dependency specification

** Work-in-progress snapshot

   From version 0.1.7 on, the durable backends for rill are split out
   from the core, which only includes an in-memory backend.

   #+BEGIN_SRC clojure
  [rill/rill "0.1.7-SNAPSHOT"]
  [rill/rill-psql "0.1.7-SNAPSHOT"] ; to include postgres store
   #+END_SRC

** Latest stable release:

   This version includes the postgres backend in the core.

   #+BEGIN_SRC clojure
     [rill/rill "0.1.6"]
   #+END_SRC

* Rill provides protocols and/or implementations for:

** EventStore

   The *system of record* in an Event Sourcing architecture; a
   collection of event streams with provisions for appending and
   retrieving events.

   Rill provides two complete implementations of the EventStore
   protocol; an ephemeral, in-memory store for testing/development,
   and a durable implementation using Postgresql as a backing store.

** Repository

   Aggregate storage implemented on top of an EventStore. Aggregates
   are implemented as reductions of event streams.

** Command handler

   Rill implements a fairly simple command -> repository -> aggregate
   -> events loop for evaluating commands and storing the resulting
   events in the event store. Synchronous event triggers are
{'fraction_non_alphanumeric': 0.047653429602888084, 'fraction_numerical': 0.004332129963898917, 'mean_word_length': 3.9659498207885306, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4364484', 'n_tokens_mistral': 756, 'n_tokens_neox': 702, 'n_words': 350}