Architecture

Overview

To mitigate the increasing complexity coming from the diversity of scientific techniques used at ESRF and their specific requirements of visualization, the data-portal project is using a micro-frontend architecture.

This means that the application is composed of several independent applications (called micro-frontends) that have their own dependencies and are loaded dynamically at runtime.

This is achieved by using module federation through vite and vite-plugin-federation.

All the micro-frontends applications are located in the apps folder.

The portal application

This is the main application of the data-portal project.

It is responsible for:

  • Being the user's entry point
  • Providing the global layout and structure of the application
  • Managing the user's authentication
  • Managing the application's configuration
  • Defining all the available routes
  • Loading the appropriate micro-frontends depending on what is being displayed
  • Providing generic visualization component for datasets, samples and investigations that do not require technique-specific visualization
  • Providing services usable by the other micro-frontends

Here are the main services implemented in portal and accessible to the other micro-frontends:

  • access to the ICAT+ API
  • access to the user's authentication information
  • access to the application's configuration
  • display of notifications
  • selection of datasets and/or samples of interest
  • insertion of technique-specific navigation options in the navigation menu
  • display of datasets, samples and investigations using the appropriate visualization component

Dataset viewers

The portal application is responsible for loading the appropriate dataset viewer depending on the technique of the dataset. Viewers to be loaded are defined in dataset.viewer.config.json (see configuration).

Sample viewers

On the same principle as dataset viewers, the portal application is responsible for loading the appropriate sample viewer depending on the technique of the sample. Viewers to be loaded are defined in sample.viewer.config.json (see configuration).

Investigation viewers

On the same principle as dataset viewers, the portal application is responsible for loading the appropriate investigation viewer depending on the technique of the investigation. Viewers to be loaded are defined in investigation.viewer.config.json (see configuration).

The logistics application

This application is responsible for:

  • Parcel management
  • Addresses management
  • Samples, investigation plans and processing plans declaration

The logbook application

This application is responsible for:

  • Investigation logbook
  • Beamline logbook

The cryoet application

This application is responsible for:

  • Cryo-ET dataset visualization
  • Cryo-ET investigation visualization

The mx application

This application is responsible for:

  • MX dataset visualization
  • MX sample visualization
  • MX investigation visualization

The session-viewer application

This application is responsible for:

  • All other techniques investigation visualization

The dataset-viewer application

This application is responsible for:

  • All other techniques dataset visualization