Skip to content

crcastle/Hummingbird

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HUMMINGBIRD

Site tracking and analytics storage

Description

Hummingbird serves a 1x1 tracking pixel to users. In the browser's GET request it sends back tracking data generated by javascript.

Requirements

  • node.js v0.1.96
  • mongodb

Installation

git clone git://github.com/mnutt/hummingbird.git
cd hummingbird

# Update submodules
git submodule update --init --recursive

# build the native mongo db driver
cd deps/node-mongodb-native; make

# Copy the default configuration file
cp config/app.json.sample config/app.json

Running Hummingbird

To start the analytics server, run the following:

mongod &   (or start mongo some other way)
node server.js

By default a dashboard will be run on port 8080. You can disable it for production use in config/app.json. The dashboard is just html served out of public/; you can serve it using any webserver.

Architecture Overview

Hummingbird is organized into two parts: a node.js-based tracking server that records user activity via a tracking pixel, and a collection of javascript-based widgets that display that activity. The server records all activity in MongoDB and broadcasts it to the clients using WebSockets if possible, and falling back to Flash sockets if necessary.

The Hummingbird.WebSocket object receives websocket events from the server in the form of JSON objects. Individual widgets subscribe to a property in the JSON tree and register handler functions to be called whenever that property is present.

Logging Customization

Metrics are stored in lib/metrics and auto-loaded.. Each metric contains a handler function that is called every time a new user event occurs. Metrics store data in the data object property which gets emitted to clients in intervals specified by the metric. A basic example can be found in lib/metrics/all.js. An example of how a metric can filter based on urls is in lib/metric/sales.js.

Display Customization

Hummingbird comes with some stock widgets (Counter, Logger, Graph) that demonstrate how to hook into the data provided by the node.js server. For the minimum amount required to create a widget, see public/js/widgets/logger.js. A widget is an object whose prototype extends Hummingbird.Base and implements onMessage.

Specs

sudo gem install jspec
jspec run --node

Tips

Contributors

License

Hummingbird is licensed under the MIT License. (See LICENSE)

About

Real-time web analytics with node.js and mongodb

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages