Git Product home page Git Product logo

dashboard's Introduction

Reportr

"Your life's personal dashboard."

Deploy

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 or your real-life activity (with hardware trackers or applications like Runkeeper), some trackers are available on this organization.

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

Screen Preview

Start your instance

Reportr is really easy to run locally or on heroku-compatible services.

$ git clone https://github.com/Reportr/dashboard.git
$ npm install .

To run it locally, you should use foreman (configuration can be stored in a .env file):

$ foreman start

To deploy it on Heroku:

$ heroku config:set MONGODB_URL=mongodb://...
$ heroku config:set AUTH_USERNAME=...
$ heroku config:set AUTH_PASSWORD=...
$ git push heroku master

API and Events

Reportr uses an HTTP REST API to track events. Datas are always JSON encoded.

Endpoint HTTP Method Description Arguments
/api/infos GET Get informations about this instance
/api/types GET Return all event types
/api/events POST Post a new event <string>type, <object>properties
/api/events GET List all events <string>type, <int>start(0), <int>limit
/api/stats/categories GET Get categorized events stats <string>type,<string>field
/api/stats/time GET Get time stats <string>type,<string>fields, <string>interval, <string>func
/api/reports POST Create a new report <string>title
/api/reports GET List all reports
/api/report/:id PUT Update a report <string>title, <array>visualizations
/api/report/:id DELETE Remove a report
/api/alerts GET List all alerts
/api/alerts POST Create an alert <string>type, <string>eventName, <string>condition, <string>title

Special Events

Name Description Properties
reportr.alert Triggered when an alert is triggered <string>type, <string>eventName

Configuration

Reportr is configured using environment variables.

Name Description
PORT Port for running the application, default is 5000
MONGODB_URL Url for the mongoDB database
REDIS_URL (Optional) Url for a redis database when using worker mode
AUTH_USERNAME Username for authentication
AUTH_PASSWORD Password for authentication

See types for informations about alert configurations.

Events

An event represent something to monitor at a defined date. For example if I'm monitoring the temperature in my home, I'll post an event home.temperature with a property temp:

$ curl -X POST -H "Content-Type: application/json" --data '{ "type":"home.temperature", "properties": { "temperature": 66 } }' http://localhost:5000/api/events

Visualizations

A visualization is a configured way to show data, for example in a pie, bar chart or time graph.

Types

Type Description

Templates

Visualizations accept templates as most of rendering options. Template are processed using lodash's _.template method with some special functions:

  • $.date(date): returns a beautiful date

Alerts

Reportr lets you configure alerts to be triggered when specific condition is valid at a specific interval.

Types

Type Description Configuration
webhook Post an HTTP request to a specific url with the data encoded in the body
mail Send an email notification <string>MAIL_SERVICE, <string>MAIL_USERNAME, <string>MAIL_PASSWORD, <string>MAIL_FROM
sms Send a text message notification <string>TWILIO_SID, <string>TWILIO_TOKEN, <string>TWILIO_FROM

Condition

Condition for alerts are really easy to write, for example: COUNT > 9, this condition will be valid if at least 10 events have been posted in the alert interval. Conditions can also use the event object, for example: event.temperature > 80.

Trackers

Description Link
Google Chrome Navigation https://github.com/Reportr/tracker-googlechrome
Home ambient (temperature, humidity, light) https://github.com/Reportr/tracker-home-ambient
Memory and CPU of computer https://github.com/Reportr/tracker-machine
Battery data https://github.com/hughrawlinson/tracker-machine-battery

Scale it

Reportr can easily be scaled on Heroku (and compatibles), use the REDIS_URL to enable a task queue between workers and web processes.

dashboard's People

Contributors

janhancic avatar md5 avatar nharada1 avatar samypesse avatar skx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dashboard's Issues

Add 'widgets' in client

Add a powerful widget system:

Right now, only reports can be added to the dashboard, Reports are pretty basic: one report = one event.

The idea is to have a 'widget system' which allow user to add widget which can combine multiple events in one visualization.

Widgets examples:

  • Fitness: display in one graph data from Runkeeper, Fitbit,...
  • Relation: display a visualization of a relationship with somebody across multiple social networks

Reports will only be a basic type of widgets.

So the UI architecture will be:

  • Dashboard
    • Widget: for type report:
      • lines
      • list
      • map
    • Widget: type fitness
    • Widget...
    • Widget...

Install on Heroku

How can I install this on Heroku for free, without entering a credit card?

Thank you

Sincerely,
Postrr

Add a system of "addons" to connect trackers

The idea is to simplify the implementation in the backend of new trackers that the users can add in one click.

Goals:

  • Addons are JS modules (can be added with npm or in the code base)
  • Should be configurable from config.js
  • Tracker should have access to a great API to manage "crons", oauth, ...

How a user can add trackers to his reportr instance ?

/* Trackers */
"trackers": [
    {
        'module': 'module_name', // inside the trackers directory or installed using npm
        'config': {
            /* Base configuration for the service : api keys, ... */
        }
    }
]

Code base for a tracker

module.exports = {
    name: "My Tracker",
    description: "My incredible tracker",
    icon: "http://...",

    setup: function(tracker) {
        /* Call with a tracker object at the server initialization */
    },
}

API for trackers

tracker.config // Config object
tracker.addCron(function(user) { }, delay) // Add a cron to indexe events for users

Navigation on iOS Chrome

iPad Mini, iOS 6.0.2 and Chrome 30.0.1599.16 here. Some links are unclickable and the whole navigation is kinda slowed down. Please do something with this, as it rends reportr unusable to me :/

Q: suggested way of implementing polled data fetcher

I understand webhooks for github deploy events or tracking web page views but what about data that one only wants to pull in on a daily basis (or when a webhook/push is not viable)? Some examples off the top of my head:

  • Track twitter followers (want to insert into db each night)
  • Ingest fitbit/other tracker data that does not support webhooks
  • Potentially syncing with MS HealthVault

Thanks!

Site down

I just created an account and started connecting services, and now the website gives the error:

Application Error
An error occurred in the application and your page could not be served. Please try again in a few moments.

If you are the application owner, check your logs for details.

Self install on heroku & problem with github oauth callback

  1. I've set up my own instance on heroku
  2. set the correct ENV for github application
  3. Activate github, and then approve it.

The callback screen [HOST]/auth/github/callback?code=7352325ea7e82e1344530a
Result is
{
error: "failed to fetch user profile"
}

Any clue on the issue?

How to set up Foursquare tracker?

Right now, as soon as i try to add the tracker this message appears:

bildschirmfoto 2013-10-11 um 10 39 24

I set up my Foresquere App like this:

bildschirmfoto 2013-10-11 um 10 36 17

Can you tell me what's wrong?

Better error handling while login

Would be nice if you would display an error message if you try to login with the wrong password, right now only the textfields are getting a red border and the logs show:

2013-10-11T08:27:34.461486+00:00 app[web.1]: Error: Error with these arguments
2013-10-11T08:27:34.461486+00:00 app[web.1]:     at module.exports.auth (/app/lib/api.auth.js:26:10)
2013-10-11T08:27:34.461486+00:00 app[web.1]:     at _rejected (/app/node_modules/q/q.js:713:24)
2013-10-11T08:27:34.461486+00:00 app[web.1]:     at Promise.then.self.promiseDispatch.threw (/app/node_modules/q/q. js:739:30)
2013-10-11T08:27:34.461486+00:00 app[web.1]:     at Promise.when (/app/node_modules/q/q.js:979:31)
2013-10-11T08:27:34.461486+00:00 app[web.1]:     at Promise.promise.promiseDispatch (/app/node_modules/q/q.js:661:41)
2013-10-11T08:27:34.461486+00:00 app[web.1]:     at messages (/app/node_modules/q/q.js:543:44)
2013-10-11T08:27:34.461486+00:00 app[web.1]:     at flush (/app/node_modules/q/q.js:106:17)
2013-10-11T08:27:34.461486+00:00 app[web.1]:     at process.startup.processNextTick.process._tickCallback (node.js:245:9)

Also, if you try to register an user which is already registered (same e-mail):

2013-10-11T08:29:13.093792+00:00 app[web.1]: Error: Error sign in user
2013-10-11T08:29:13.093792+00:00 app[web.1]:     at module.exports.auth (/app/lib/api.auth.js:62:10)
2013-10-11T08:29:13.093792+00:00 app[web.1]:     at _rejected (/app/node_modules/q/q.js:713:24)
2013-10-11T08:29:13.093792+00:00 app[web.1]:     at Promise.then.self.promiseDispatch.threw (/app/node_modules/q/q. js:739:30)
2013-10-11T08:29:13.093792+00:00 app[web.1]:     at Promise.when (/app/node_modules/q/q.js:979:31)
2013-10-11T08:29:13.093792+00:00 app[web.1]:     at Promise.promise.promiseDispatch (/app/node_modules/q/q.js:661:41)
2013-10-11T08:29:13.093792+00:00 app[web.1]:     at messages (/app/node_modules/q/q.js:543:44)
2013-10-11T08:29:13.093792+00:00 app[web.1]:     at flush (/app/node_modules/q/q.js:106:17)
2013-10-11T08:29:13.093792+00:00 app[web.1]:     at process.startup.processNextTick.process._tickCallback (node.js:245:9)

License?

I notice that you've not included a LICENSE file. What license is this under?

Install not clear RHEL6

This looks really revolutionary. However, having difficulty getting it functioning properly. Here is what see in the Docs.:
$ git clone https://github.com/Reportr/dashboard.git
$ npm install .
To run it locally (configuration can be stored in a .env file):
$ foreman start

Not sure what suppose to happen here. Npm load in seems fine. No reporter.js is created by the install. I can run with node web.js after changing the config file to point to a port, but does not seem to be firing all the code. And foreman start? Not sure what is happening there. Can you take a look to see if this could be clarified a bit? Also, a simple config file would be helpful for dev environments where we are changing ports and configs on the fly and are running multiple node environments. Thank You!

Facebook Auth.

I reckon you need to change sandbox your FB app.

"error": "This app is in sandbox mode. Edit the app configuration at http://developers.facebook.com/apps to make the app publicly visible."

Environment agnostic install & start script/instructions

I've tried to install reportr on my own server, while I found that instructions in readme assume installation on Heroku, with which I'm not familiar.

I think install and start of application, shouldn't cost more than npm install && npm start on any *nix environment, however I don't see configured start script, so I'm not sure where to go after npm install

Problem with web tracking

I just pulled the latest changes and tried out the web tracking. Unfortunately it doesn't work properly:

bildschirmfoto 2013-10-13 um 01 21 45

The requests however arrive at the server:

2013-10-12T23:24:19.634673+00:00 heroku[router]: at=info method=GET path=/api/f9331dca-e823-4dd4-b50a-a553e98c528e/events/track?callback=?&data=eyJldmVudCI6InZpc2l0IiwibmFtZXNwYWNlIjoiY2hyb21lIiwicHJvcGVydGllcyI6eyJ1cmwiOiJodHRwczovL2dpdGh1Yi5jb20vU2FteVBlc3NlL3JlcG9ydHIvaXNzdWVzL25ldyIsInRpdGxlIjoiTmV3IElzc3VlIMK3IFNhbXlQZXNzZS9yZXBvcnRyIn19 host=frdmn-report.herokuapp.com fwd="178.27.214.253" dyno=web.1 connect=1ms service=24ms status=200 bytes=251

Install on Cloud9

How could you install this on Cloud9?

Thank you

Sincerely,
Postrr

Dependency has wrong name

I get an error when running 'make all':

'Can't find module "Q"'

from the line

var Q = require('Q");

It's coming from line 6 of client.js. The issue is that the module name is "q" (lowercase) and it just can't find it. If I change the Q in the require to a q it works fine. This is on Ubuntu Linux so possibly some systems are not case sensitive.

Reportr.io stopped

Edit 16 december 2013: Because of the price and the evolution of the database, I stopped the reportr.io instance.

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.