Skip to content

Flask backend

We use Flask as our web framework. It handles user authentication, dataset upload, task creation, and other aspects that require server-side interaction. It is designed to be independent from the OpenML API. This means that you can use it to create your own personal frontend for OpenML, using the main OpenML server to provide the data. Of course, you can also link it to your own local OpenML setup.

Bindings to OpenML server

You can specify which OpenML server to connect to. This is stored in the .env file in the main directory. It is set to the main OpenML server by default:


The ElasticSearch server is used to download information about datasets, tasks, flows and runs, as well as to power the frontend search. The OpenML server is used for uploading datasets, tasks, and anything else that requires calls to the OpenML API.

Bindings to frontend

The frontend is generated by React. See below for more information. The React app is loaded as a static website. This is done in Flask setup in file

    app = Flask(__name__, static_url_path='', static_folder='src/client')

We use webpack to bundle the whole React App into one file bundle.js. This is done by running npm run debug. The settings for this are in webpack.config.js. For instance, it defines that client/app/openml.jsx is the entry file for the web app.

entry: APP_DIR + '/openml.jsx',

It will find the React app there and load it.