[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 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.
- 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.
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.
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.
$ 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
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');
});
});
<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
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.
Contacting us is easy, ping us on one of these:
- @joolaio
- [email protected]
- You can even fill out a form.
Copyright (c) 2012-2014 Joola Smart Solutions. GPLv3 Licensed, see LICENSE for details.