Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/Reportr/dashboard

Your life's personal dashboard.
https://github.com/Reportr/dashboard

Last synced: 13 days ago
JSON representation

Your life's personal dashboard.

Lists

README

        

Reportr
=========

> "Your life's personal dashboard."

[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/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](https://github.com/Reportr).

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

[![Screen Preview](./preview.png)](./preview.png)

## 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](http://ddollar.github.io/foreman/) (configuration can be stored in a [.env file](https://devcenter.heroku.com/articles/config-vars#local-setup)):

```
$ 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 | `type`, `properties` |
| /api/events | GET | List all events | `type`, `start(0)`, `limit` |
| /api/stats/categories | GET | Get categorized events stats | `type`,`field` |
| /api/stats/time | GET | Get time stats | `type`,`fields`, `interval`, `func` |
| /api/reports | POST | Create a new report | `title` |
| /api/reports | GET | List all reports | |
| /api/report/:id | PUT | Update a report | `title`, `visualizations` |
| /api/report/:id | DELETE | Remove a report | |
| /api/alerts | GET | List all alerts | |
| /api/alerts | POST | Create an alert | `type`, `eventName`, `condition`, `title` |

#### Special Events

| Name | Description | Properties |
| ---- | ----------- | ---------- |
| reportr.alert | Triggered when an alert is triggered | `type`, `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](#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](http://lodash.com/docs#template) 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 | `MAIL_SERVICE`, `MAIL_USERNAME`, `MAIL_PASSWORD`, `MAIL_FROM` |
| sms | Send a text message notification | `TWILIO_SID`, `TWILIO_TOKEN`, `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.