Plugin Design

AiiDAlab plugins are designed as jupyter notebook UIs with a core package providing the UI components. Each plugin is required to have a setup.cfg and a start.py files within their root directory to specify to AiiDAlab the plugin metadata and how to display the start banner for the plugin. From here each page defined within the application is described by a jupyter notebook (*.ipynb) file which may call components from the core python package.

Model-View-Controller Paradigm

It is recommended that an AiiDAlab plugin follows the widely recognised Model-View-Controller design paradigm for UI development. The core UI package will use IPywidgets (or aiidalab’s own pre-configured widgets) to display the various UI components that a user will interact with. This defines the view for the application. The data that is being handled should exist seperate to any visual components that are part of the applications view layer. They are handled by the traitlets python packages and can be dynamically linked to user inputs through the view layer but should exist indendantly, thus defining the model layer. The controller layer is an optional additional layer that defines user controll over that application that doesn’t directly interact with any of the stored data.