Skip to content
/ joola.io Public
forked from joola/joola

Embedded, realtime data analytics and visualization.

License

Notifications You must be signed in to change notification settings

Kuew/joola.io

 
 

Repository files navigation

joola.io Build Status Gitter chat

[Technical Docs] techdocs [Setup Guide] setup [API Docs] api-docs Contributing contributing [About joola.io] about
[![i1] techdocs-image] techdocs [![i2] setup-image] setup [![i3] api-docs-image] api-docs [![i4] contributing-image] contributing [![i5] about-image] about

joola.io logo

joola.io is a real-time data analytics and visualization framework allowing you to quickly save, query and visualize your data. Some of the main benefits of using joola.io include:

  • Simple, flexible and powerful JSON to describe your data and push to joola.io.
  • Our intuitive query JSON syntax makes it easy to analyze or visualize your data in blazing speed.
  • Seamlessly embeddable into existing sites, including single-sign-on and advanced features.

Main Features

  • Big-data, supports distributed caching and processing to cope with big-data needs.
  • Real-time data processing. Display analytics as they arrive.
  • Fast, advanced caching algorithm. Avg. query time of less than a few seconds.
  • Embed quickly, seamlessly integrate with your site.
  • Scalable, run on a single machine or a node-based matrix.
  • Secure, role-based, multi-tenant, data segregation.
  • Extend, easy to add more data sources, authentication and cache middleware.

Getting Started

We've pre-loaded the package with a fully working sample site, so it's easy to get started.

joola.io uses several leading open-source software for its operation. Before getting started, please install MongoDB, Redis and RabbitMQ, for more details on these pre-requisites please refer to the wiki.

For the example below to work out-of-the-box, it's required to have both joola.io and its dependencies installed on localhost. For more details on the installation process, please refer to this guide.

Using Vagrant

We have included a Vagrant file to support easy playing around and testing. Running vagrant up will install all needed dependencies and run joola.io for you in a sand boxed virtual environment.

# Clone this repository
$ git clone https://github.com/joola/joola.io
$ cd joola.io

$ vagrant up
# wait for the box to come online
$ vagrant ssh 

# once in the box
$ cd /opt/joola/node_modules/joola.io
$ node joola.io.js

We have configured the VM to use 2 CPUs with 2048MB of memory, but these can be configured from Vagrantfile if you prefer different settings.

Install via NPM

$ mkdir /opt/joola.io
$ cd /opt/joola.io
$ npm install joola.io
$ node ./node_modules/joola.io/joola.io.js

Access REST API using cURL (-k switch due to default localhost SSL certificate)

$ curl -i -k  https://localhost:8081/system/version?APIToken=apitoken-demo

HTTP/1.1 200 OK
Server: joola.io
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: ETag, X-RateLimit-Limit, X-RateLimit-Remaining,
  X-RateLimit-Reset
X-JoolaIO-Request-Id: 87IpUGxDQ:1399738779977:0xOC0CqXB
X-Powered-By: joola.io
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4973
X-RateLimit-Reset: 1399741710
Retry-After: 2930
X-JoolaIO-Duration: 5
X-JoolaIO-Requested-By: 87IpUGxDQ
X-JoolaIO-Fulfilled-By: 87IpUGxDQ
X-JoolaIO-Duration-Fulfilled: 2
Content-Type: application/json
Content-Length: 36
ETag: "867689076"
Vary: Accept-Encoding
Date: Sat, 10 May 2014 16:19:39 GMT
Connection: keep-alive

{ "version": "joola.io version 0.4.1" }

Following the installation, point your browser to https://localhost:8081 and you'll be able to use the framework.

Learn more about getting started with joola.io

To push your first event

Using cURL:

$ curl \
     --include \
     --request POST \
     --header "Content-Type: application/json" \
     --data-binary "[{
       \"timestamp\": null,
       \"article\": \"Sample Analytics\",
       \"browser\": \"Chrome\",
       \"device\": \"Desktop\",
       \"engine\": \"Webkit\",
       \"os\": \"Linux\",
       \"userid\": \"[email protected]\",
       \"ip\": \"127.0.0.1\",
       \"referrer\": \"http://joo.la\",
       \"visits\": 1,
       \"loadtime\": 123
     }]" \
     https://joolaio.apiary-mock.com/beacon/{workspace}/{collection}{?APIToken}

Using the SDK:

var joolaio = require('joola.io.sdk');

joolaio.init({host: 'https://localhost:8081', APIToken: 'apitoken-beacon'}, function(err) {
  var doc = {
    "timestamp": null,
    "article": "Sample Analytics",
    "browser": "Chrome",
    "device": "Desktop",
    "engine": "Webkit",
    "os": "Linux",
    "userid": "[email protected]",
    "ip": "127.0.0.1",
    "referrer": "http://joo.la",
    "visits": 1,
    "loadtime": 123
  };
  joolaio.beacon.insert('collection-name', doc, function(err) { 
    console.log('Document saved');
  });
});

Learn more about pushing data

Your first visualization
<div id="drawhere">

<script src="https://localhost:8081/joola.io.js">
<script>
var joolaio = require('joola.io.sdk');

joolaio.init({host: 'http://localhost:8080', APIToken: 'apitoken-beacon'}, function(err) {
  joolaio.viz.timeline({
    container: document.getElementById('drawhere'),
    query: {
      dimensions:['timestamp'],
      metrics: ['value']
    }
  }
});
</script>

Learn more about analytics and visualizations

Contributing

We would love to get your help! We have outlined a simple Contribution Policy to support a transparent and easy merging of ideas, code, bug fixes and features.

If you've discovered a security vulnerability in joola.io, we appreciate your help in disclosing it to us in a responsible manner via our Bounty Program.

If you're looking for a place to start, you can always go over the list of open issues, pick one and get started. If you're feeling lost or unsure, just let us know.

Contact

Contacting us is easy, ping us on one of these:

License

Copyright (c) 2012-2014 Joola Smart Solutions. GPLv3 Licensed, see LICENSE for details.

About

Embedded, realtime data analytics and visualization.

Resources

License

Stars

Watchers

Forks

Packages

No packages published