FAQ

How do we uniquely identify users?

We identify users uniquely by creating a hash and storing it in a Redis database along with a UUID which automatically deletes itself in 24 hours.

hash = md5( raw_public_ip + browser_name + operating_system + date + secret)

It generates a 32 character long string with is stored in database along with a UUID and it is only valid for a day.

Parameters used in hash have the following reasons,

  1. IP - to identify user ( It may be a public IP like café or a user's own IP )

  2. Browser - So if user changes his/her browser we forget it.

  3. Operating System - So if user changes its device we forget him.

  4. Date - So we forget user daily.

  5. Secret - Here comes the most important part we while production recommend to use a UUID that isn't logged anywhere so even if want to view user's private info you can't, but while development use a hardcoded string as you restart server many times and it will generate false unique visitors.

What makes it different ?

There are many privacy friendly analytics tool but here are some points that makes it special.

  1. It is written in go so you can but it on the same server as your app as it uses nearly to negligible amount of resource ( in large schema of things ).

  2. It is written in go fiber which can handle a by lot I mean around 35,000 requests per second ( as per their website).

  3. It supports Clickhouse to store its data so scale is not a problem.

Why don't it has a dashboard build in ?

It is being worked upon and it will be available in upcoming few days.

Note

  1. It is not tested on SPA so it would be great if you can test it and let me know the result by creating a issue or discussion in the GitHub repo.

  2. It is not tested in production yet.

Last updated