Giter Club home page Giter Club logo

reportr's Introduction

Reportr

"Your life's personal dashboard."

Reportr is a complete application which works like a dashboard for tracking events in your life (using a very simple API). With a simple interface, it helps you track and display your online activity (with trackers for Facebook, Twitter, GitHub, ...) or your real-life activity (with hardware trackers or applications like Runkeeper).

The project is entirely open source and you can host your own Reportr instance on your own server or Heroku.

A simple instance of Reportr runs at www.reportr.io. This is a very small instance and you can't use it yet for tracking a lot of events, but I'll probably scale this in the future.

Screen

Why Reportr is great ?

  • Host your own Reportr instance and keep your data private
  • Track events from anywhere (web server, client application, connected hardware, ...)
  • It's very simple to track an event: HTTP API
  • Simple, but powerful web dashboard
  • Realtime display
  • One place for all your personal analytics data
  • Very simple to export data for analytics (machine learning, ...)

How to host your own Reportr instance ?

# Clone the source code
$ git clone https://github.com/SamyPesse/reportr.git && cd ./reportr

# Edit the config.js file
$ nano ./config.js

# Create your heroku application
$ heroku create

# Add MongoHQ or MongoLab addon for heroku
$ heroku addons:add mongohq:small
or
$ heroku addons:add mongolab:sandbox

# Deploy the application
$ git push heroku master

# Open the application in your browser
$ heroku open

APIs

Reportr use a HTTP REST API to track event and manage models.

Data are always JSON encoded and Base64 encoded and passed as a "data" argument. You can pass a "callback" arguments for using HTTP API in a client side application.

You can get some libraries to use Reportr in Python and Javascript in the examples directory. To build the Javascript client library, you will need 'browserify' (npm install -g browserify).

Track events

Events are definied by 'event', 'namespace' and 'properties'. You can alse specify optional paramaters such as 'id' for updating unique event if existant or 'timestamp' to define time position for the event.

<host>/api/<token>/events/track

{
	"namespace": "string", // Event namespace
	"event": "(string)", // Event name
	"properties": {
		// Properties for the event
	}
}

List events

# List last events
<host>/api/<token>/events/last

# List specific events
<host>/api/<token>/events/<namespace>/<event>

Define models

Events models define information about how to display an event in the dashboard.

<host>/api/<token>/model/set

{
	"namespace": "string", // Event namespace
	"event": "(string)", // Event name
	"name": "(string)", // Display name for the event
	"icon": "(string)", // Url for a 64x64 icon image
	"description": "(string)", // Description text for the event
}

List models

<host>/api/<token>/models

Special properties for events

When you track events using the API, you can define some specials properties that can be use by Reportr for advanced used. Special properties always begin with '$'.

$lat : latitude for location
$lng : longitude for location

Trackers

Here is a list of trackers, I already build or I want to build.

  • [done] Web Navigation: track my web navigation using a chrome extension
  • Facebook: track my relations on Facebook (using Realtime API)
  • GitHub: track my coding activity on GitHub (using GitHub Webhooks)
  • Twitter: track my twitter activity (tweets, mentions, ...)
  • Runkeeper: track my running activity
  • Hardware:
    • Track the temperature in my room (using tessel.io)

Track your web navigation

On Google Chrome, open the extensions settings and add an unpacked extension from the directory examples/javascript/chrome. Define your host and token in the popup and that's it!

* You can get the token by clicking the "key" icon at the bottom left corner of your reportr page.

Note: For your own reportr instance, you need to modify the manifest.json to change the permissions.

reportr's People

Contributors

samypesse avatar janhancic avatar crcastle avatar skx avatar

Watchers

 avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.