Spine Event Engine is a framework for building cloud applications and transforming EventStorming into a working domain model code.

Our goal is to free developers from writing boilerplate code as much as possible. The primary language of our solution backend is Java. Client libraries are available for Java, JavaScript, and C++.


Strongly Typed Domain Model

Spine promotes strong typing of all parts of a business model. You don't have to deal with JSON.

Code Generation

The model is defined and maintained in Protobuf. The code is automatically generated for all the languages of your project, as you update the model.

Choice of Storage and Deployment Platforms

The framework promotes writing storage- and platform-agnostic code. You can start with JDBC and later switch to Google Cloud Platform Datastore by changing just a few lines of code.

Model Extensibility

With Protobuf support, a model can be extended preserving backward compatibility with clients running older code.

Promoted Immutability

Commands, events, query results, entity states, and other data are immutable. This makes them automatically thread-safe, and thus freely shared or referenced.

Open Source

Permissive Apache License allows using the framework in closed-source projects. You are also welcome to contribute to our framework development.

Built-in Validation

Constraints defined in a business model are automatically checked for commands, events, and entity states using our validation approach.

Multitenancy Support

Transforming a single-tenant application into a multi-tenant one requires a few lines of code. You don't have to introduce tenantId parameters for all the calls.

The story behind Spine

We started developing our framework after completing several CQRS/ES-related projects. This is when we got our hands-on knowledge in manual creation of commands, events, message handlers, delivering messages and data to web and mobile clients.

Using existing CQRS/ES frameworks made us compromise on a number of things, including type safety, immutability, writing conversion code for inter-platform communications, and others. So in June 2015 we decided to build a tool both for us and software developers who may have the same issues.

Software products that help us

Tools we use

Libraries we rely on