Skip to content


Repository files navigation


Kindmetrics is an strictly privacy focused web analytics for your website.

Thanks to being built on Crystal, Kindmetrics is very small when compiled (~10MB) and is very fast. Faster than Elixir, Rails or java. It use very little cpu and memory and could be deployed on old machines with linux as distro.

It is built based on following ideas:

  • Simplicity
  • Privacy for both you and your visitors
  • GDPR compliant

And as a service we follow these ideas:

  • Only EU-based services used, except for DO but the servers will be on EU soil
    • If we find a better managed kubernetes service in EU than DO, with managed db, we will move.
  • No CDN for APIs, If we add cdn for the assets files it will be an EU-based one - but for now we won't.
  • We shall always force privacy-features like DNT.

And for the technical stand, we follow these ideas:

  • Small footprint (both in size and traffic)
  • As less third party dependent as possible
  • Focus on one thing only: Analytics
  • No SPA here. we focus on backend with some javascript.

Technical stuff

Kindmetrics is built on:

  • Lucky framework, on Crystal language
  • Tailwind css
  • Stimulus.js
  • Apexchart
  • DataMap
  • Litepicker
  • Clickhouse
  • PostgreSQL

Setting up the project

If you want to run this project for dev, like when you want to fix bugs or new features, you have to install Crystal language. You can find more info about crystal at - You can use crenv, asdf or similar. Check the details on

When that is done, you have to setup the lucky project:

  1. Install required dependencies
  2. Update database settings in config/
  3. Run lucky kind.clickhouse
  4. Run script/setup
  5. Run lucky dev to start the app


Kindmetrics have some tests, even if they could be more. But you can run them by:

crystal spec

And the code should be in /src and the tests in /spec


You can find the deployment instructions in file


I am all open for any help I can get with this project.

Fork this repo, add push your changes to a new branch and create an pull request. I will review when I can. if they follow the aboves ideas and standpoints and don't go against my plans for future, which can be seen in the issues I will approve. Just add tests. Even if I have been bad on that I am trying to be better.