Open-source projects


ASP.NET MVC web application for sharing links that demonstrates using CQRS with event-sourcing.

A sample web application for link sharing inspired by RubyFlow.

Demonstrates implementing the CQRS/ES architecture using the open-source NEventStore persistence library.

Used behaviour-driven development to spec business features using SpecFlow.

Commanded Elixir

Command handling middleware for CQRS application.

Provides support for command registration and dispatch; hosting and delegation to aggregate roots; event handling; and long running process managers.

Use with the eventstore and eventsourced projects as components that comprise a CQRS framework for Elixir applications.

EventSourced Elixir

Build functional domain models using event-sourcing.

An Elixir macro to build event-sourced aggregate roots.

EventStore Elixir

CQRS event store using PostgreSQL as the underlying storage engine.

An event store is a type of database optimised for the storage of events.

Event Store supports appending events to a stream, reading events from a single stream, or all streams, and subscribing to events as they are published.

Faker .NET C#

C# port of the Ruby Faker gem.

C# port of the Ruby Faker gem). Used to easily generate fake data: names, addresses, phone numbers, etc.

Available as a NuGet package.

Jekyll lunr.js search Ruby JavaScript

Jekyll + lunr.js = static websites with powerful full-text, client-side search using only JavaScript.

Use lunr.js to provide simple full-text search, using JavaScript in your browser, for your Jekyll static website.

Ledger Node.js JavaScript

Node.js library to access the Ledger command-line interface.

Ledger is a powerful, double-entry accounting system that is accessed from the UNIX command-line.

ledger-cli allows you to access accounts, balance, and register data from a Ledger .dat file.

Ledger REST Node.js JavaScript

REST web service to access the Ledger command-line interface.

ledger-rest allows you to host balance and register data from a Ledger .dat file as a RESTful web service.

Ledger import Node.js JavaScript

Node.js command-line tool to facilitate data entry into a Ledger file.

Import accounting transactions from a CSV file into Ledger, using naive Bayesian learning to identify accounts from each payee.

Ledger web Node.js JavaScript

Web front-end to graphically view a Ledger data file.

Uses NVD3 and Marionette to plot charts displaying income, expenditure, net worth, and balance from a Ledger .dat file.

Pipes and filters Node.js JavaScript

Node.js library to divide a larger processing task into a sequence of smaller, independent processing steps (filters) that are connected by channels (pipes).

Each filter exposes a very simple interface: it receives messages on the inbound pipe, processes the message, and publishes the results to the outbound pipe.

The pipe connects one filter to the next, sending output messages from one filter to the next.


Ruby CQRS and event-sourcing library.

A Ruby implementation of Command-Query Responsibility Segregation (CQRS) with event-sourcing, based upon the ideas of Greg Young.

Uses Active Record from Ruby on Rails for its database persistence.

RCQRS Rails Ruby

Use the RCQRS library in your Rails web app.

Allows the CQRS/ES architecture to be used when building Ruby on Rails web applications.

Treaty TypeScript JavaScript

Rules Engine written in TypeScript implementing the Rete algorithm.

A business rules engine written in TypeScript implementing the Rete algorithm.

Rete is an efficient pattern matching algorithm for implementing production rule systems.