Technical Stack Details

Toucan Toco is built with awesome open-source blocks that have proven their reliability and efficiency.

Front-end

The front-end is only a collection of static files (js, css…).

Those files are generated mainly with the following JS libraries:

  • Vue.js as the application framework
  • AngularJS as the former application framework, now deprecated in favor of Vue.js.
  • D3.js to render some charts

It’s built using this set of languages and tools:

We also use Nginx as the webserver of all front-end files.

All open-sources library used in the front-end are available with their licence note in the third-party-notice.txt file.

Back-end

The back-end is a Python 3.6 HTTP REST API mainly powered by:

  • Flask as application framework
  • Pandas for data processing
  • Celery as distributed task queue
  • Dask as parallel computing library

Many other python libraries are used for databases connections, access rights, etc.

It also uses Node.js for some operations such as compiling CSON configuration files to JSON.

MongoDB is our database of choice for storing our apps data, aggregate data, results and configurations. MongoDB is also used as a kind of cache to avoid to pull your data for each request.

Redis is used as messages broker between Celery processes and also as cache of MongoDB.

Nginx is usually used as a reverse proxy and supervisord as a processes manager.

Detailed Workflow

Big Picture

With the details given above, the full workflow will be as following:

Toucan Toco - Full Stack

Toucan Toco - Full Stack

  • all connections are in HTTPS (the connection between Nginx and the Toucan Toco App is over HTTP but it’s through a local socket).
  • if the Toucan Toco backend is installed in a private network, an outside client will not be able to reach it and access the data. The client should be inside the private network or use a VPN connection.
  • the Toucan Toco frontend is only static assets (js, css, html…). There is no data on the frontend side.

Typical Sequence Workflow

To complete the previous schema, please find the typical sequence workflow between the Toucan Toco frontend, a client and the Toucan Toco backend.

Toucan Toco - Sequence Workflow

Toucan Toco - Sequence Workflow

  • The client (browser) downloads static assets (js, css, html…) from the Toucan Toco frontend by HTTPS.
  • Then the client only talks with the Toucan Toco backend by HTTPS. The only data stream is between the client (browser) and the Toucan Toco backend.
  • There is no data stream/flow between the Toucan Toco frontend and the backend.

Open-source

We also contribute by publishing some of our work in the open-source community.

Feel free to look at our public repositories on GitHub.