Online Report Builder
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
client
storage Refactor docker-compose to use in prod and dev. Jun 28, 2018
.gitignore Fix usage of dotenv for local dev. Sep 24, 2018
README.md
doc.txt
docker-compose.production.yml
docker-compose.yml Specify version 2 of docker-compose. Jun 28, 2018
todo.md

README.md

Processeer

Processeer is an online report builder. It allows you to create reports by fetching data from public APIs and transforming that data into anything you like using the power of JavaScript. It then takes care of nicely displaying that data for you, in tables or charts for example.

Important notes

This is an alpha version. It has some features, the ones I deemed the most important, but lacks many more that would make it a truly good tool (the main missing feature is forking, the second main missing feature is an actual permission system). It is probably not secured, as I haven't done much to verify that it is. The custom JavaScript is executed using the jailed library, which supposedly is secured, but there might be a lot of other ways to attack the website. Please please do not use it for sensitive things.

Core Concepts

Blocks

A Block is a basic unit of logic in Processeer. It has 3 main components:

  • Parameters - variables that can have a default value and can be set in a form, via the URL or from a previous Block
  • Models - a list of API endpoints to fetch, with associated parameters
  • Controller - a JavaScript transform function that takes the parameters and models data as input and can output whatever you like

Blocks can be chained. In that case, the output of each Block will be passed as the input of the next Block in the chain. The output of the last Block will be displayed.

Reports

A Report is a list of Blocks, that can be executed to display data. Blocks are called in order, and the output of the last Block in the chain will be parsed and displayed using front-end libraries, depending on the format of that data.

Documentation

Supported Outputs

Table :: example

Displays data as a table. Uses React Table (documentation).

{
    "type": "table",
    "title": "My Nice Table",
    "options": {},
    "data": [
        {
            "Field 1": "foo",
            "Field 2": "bar"
        },
        {
            "Field 1": "fizz",
            "Field 2": "bizz"
        }
    ]
}

See React Table's documentation about properties for a list of options you can pass to customize your table.

Tables :: example

Same as Table, but it will show several tables instead of just one.

{
    "type": "tables",
    "title": "My Nice Tables",
    "data": [
        {
            "options": {},
            "data": [
                {
                    "Field 1": "foo",
                    "Field 2": "bar"
                },
                {
                    "Field 1": "fizz",
                    "Field 2": "bizz"
                }
            ]
        }        
    ]
}

Line Chart :: example

Displays a line chart. Uses Chart.js (documentation).

{
    "type": "chart:line",
    "title": "My Little Chart",
    "data": {
        "labels": ["Point 1", "Point 2"],
        "datasets": [
            {
                "label": "Line 1",
                "data": [ 12, 24 ]
            }
        ]
    }
}

See the Chart.js documentation about Line Charts for a list of options to customize your datasets.

Installation

Processeer runs in a docker environment. You need docker and docker-compose to run it locally. Example nginx configuration files are provided for a production installation.

To run Processeer locally, run the following commands:

cd processeer

# Create a Kinto instance.
docker-compose up kinto -d

# Set up permissions in Kinto (only the first time).
source storage/init.sh

# Start the web site.
cd client
npm start

By default the Kinto database is exposed on localhost:8888 and the Processeer web site is exposed on localhost:8080.