Matt - A monitoring tool for data-driven business decisions

Matt is a CTO-oriented tool that helps capturing daily data points that are relevant for conducting growth hacking and other data-driven decisions.

It consists of the following abstractions:

  • Datasource: provides access to data from which measures are extracted
  • Measure: standardized data vector for relevant decisions
  • Exporter: a way to save measures for future analysis and visualization

How to install Matt?

There are various usage scenario to use matt, according to your needs and types of environment and datasources.

As a commandline

To simply use Matt as a commandline and connect to local databases, simply install and use the ruby gem:

gem install matt
matt --help

As a docker image

If you don't have ruby installed and want to use docker instead, we provide a docker image that has Matt as entrypoint.

docker run enspirit/matt --help

Please check docker's network documentation if you want Matt to connect to databases running on your host.

In a Gemfile

It may be useful to use Matt as part of a larger ruby gemset, for instance because you need various ruby gems to connect to mysql, postgres, or whatever.

Then in your Gemfile:

source https://rubygems.org

gem "matt"

Then,

bundle exec matt --help

As a docker base image + a Gemfile

If Matt is part of a larger docker/kubernetes infrastructure, you probably need the last scenario while also having your own docker image for the component.

This is a good basis for a Dockerfile:

FROM enspirit/matt   # or from ruby-3.0:alpine

COPY Gemfile .
RUN bundle install

ENTRYPOINT ['bundle', 'exec', 'matt']

Let's say you build that image as my/matt, you can now simply run matt as follows:

docker run my/matt --help

In such a scenario, you may want to use Matt's version that exists in the docker container instead without having to specify it in the Gemfile. The following Gemfile hack works:

gem "matt", path: "/matt"

Semantics versioning

Matt uses semantics versioning since 1.0.

The public API consists in:

  • Matt public methods
  • Matt::Configuration public methods
  • Matt::Datasource public & protected methods exposed to including classes
  • Matt::Exporter (same)
  • Matt::Measure (same)
  • matt commandline and its options
  • enspirit/matt docker image with /matt and /home/matt behavior

Contribute

Please use github issues and pull requests for all questions, bug reports, and contributions. Don't hesitate to get in touch with us with an early code spike if you plan to add non trivial features.

Licence

This software is distributed by Enspirit SRL under a MIT Licence. Please contact Bernard Lambeau ([email protected]) with any question.

Enspirit (https://enspirit.be) and Klaro App (https://klaro.cards) are both actively using and contributing to the library.