Introducing Snowfinch: open source realtime web analytics

Snowfinch is an open source realtime web analytics application built with Ruby on Rails and MongoDB. The project was developed as a part of my thesis, and has then been released under the MIT license.

The application focuses on what is happening right now on your site. To a user it works just like most other analytics products: sites can be tracked by adding nothing more than a JavaScript snippet.

Sites screenshot

The dashboard view for a tracked site is very simple. It shows three counters (active visitors, pageviews today, and unique visitors today) and a chart containing both the number of pageviews for the current day as well as the previous day. Both the chart and the counters are updated every second.

There is also a text input where a URI can be pasted, and a similar dashboard is displayed for a single page of the site. This seems like a much better solution than a large list of every single page that has been tracked.

Site dashboard screenshot

In addition to the dashboard, Snowfinch provides a very neat monitoring tool. Monitoring is done via sensors. At the moment two types of sensors exist, but more can be developed.

The first sensor type is the query based sensor. This sensor is triggered when a page URI contains a given query key and value. It can be used, for example, to monitor campaigns.

Query based sensor screenshot

The other sensor is the referrer based sensor. This allows tracking of how many entries to the site there are from any given number of referrer hosts. An example use case is adding and as referrer hosts to see how much traffic you are getting from social media sites.

Referrer based sensor screenshot

For each sensor, a chart displaying the number of entries is shown.

Sensor dashboard screenshot

It doesn’t have all the features in the world at this stage, but if you’re interested in hosting your own web analytics application, this is a project you’ll want to keep an eye on.

I already have a small roadmap shown below. If you have any further suggestions, I’d love to hear them.

If you’re looking to contribute, go ahead and start coding. I’m taking a small break from developing it, while I readjust myself to working full time, but development will continue.

The code is available on GitHub and you can reach me at

// joao