trackable

A simple, modular node.js module for distributed app usage tracking.

Trackable (W.I.P)

A simple, modular node.js module for distributed app usage tracking.

The interface leverages the global process.EventEmitter to simplify implementations and to reduce the risk of side-effects caused by tracking. You can safely disable or completly remove the tracker, without the need to remove the code using it.

It comes with a Memory, CouchDB & Remote "receiver".

This module is not battle-proven yet and to be considered as alpha.

  • Distributable (Send events from one tracker instance to another over the network)
  • Modular (write your own event store/receiver!)
  • Comes with an Express Middleware
var trackable = require('node-trackable'),
    repl = require('repl'),
    http = require('http');
 
var tracker = new trackable.Tracker({
  eventName: 'trackable',
  verbose: true,
  emitDefaultKeys: true
});
 
http.createServer(function(reqres) {
  if(req.url === '/' && req.method.toLowerCase() === 'get') {
 
    process.emit('trackable', {
      type: 'pageview_home',
      ip: req.connection.remoteAddress
    });
 
    res.writeHead(200, {'content-type': 'text/html'});
    res.end('This request has been tracked.');
  }
}).listen(8000);
 
repl.start({
  prompt: "REPL> ",
  input: process.stdin,
  output: process.stdout
}).context.events = tracker.receiver.store;
[Tracker] Event received: { type: 'pageview_home', ip: '127.0.0.1', time: 1360188808356 }
[Tracker] eventCount: 1
[Tracker] receiverErrorCount: 0
REPL> console.log(events);
[ { type: 'pageview_home', ip: '127.0.0.1', time: 1360188808356 } ]

API

var tracker = new trackable.Tracker({
  eventName: 'trackable',
  verbose: false,
  emitDefaultKeys: true
  receive: {
    port: 8000
  },
  receiver: new MemoryStore(),
  verifyEmit = false;
})

Added express middleware

Initial commit

  • Test what happens if you modify event object after emitting.
  • Implement (de-)fragmentation of large udp packets (remote sender/receiver).
  • Write documentation for trackable.Tracker() options

Trackable is licensed under the MIT license.

  • Commit code and get featured here ;-)