Code Monkey home page Code Monkey logo

metis-bff's Introduction

Metis data management GUI: Backend for Frontend

Metis is an open scientific framework, materials data organizer, and collaborative online platform for the nanotechnology research. It was designed for the materials research teams at the physical and virtual laboratories. Metis is an AI-ready solution, aiming to bring the recent advances of computer science into a rather conservative area of new materials development and quality control. Metis currently focuses on the X-ray powder diffraction and atomistic simulations. It was started in 2021 in BASF (Ludwigshafen am Rhein, Germany) by Bernd Hinrichsen and Evgeny Blokhin.

This is the second part of the whole Metis infra: GUI โ‡„ BFF โ‡„ backend.

Whereas the scientific features of Metis are handled with its backend, this BFF provides user and access management, as well as the backend proxy. The scientific data are represented by the abstract datasource objects, managed by GUI users or scripted clients via the standard application programming interface (API).

Requirements

  • node -v >= 15
  • npm -v >= 7
  • Postgres (any relatively new)

NB to upgrade node you may run npm install -g n && n lts and re-start the shell.

Installation

cp conf/env.ini.sample conf/env.ini
npm install
npm run db-migrate
npm run db-seed

Running

For development mode run the following command:

npm run dev

For production mode run the following command:

npm run start

Configure the development and production settings in conf/env.ini file.

Technical details

BFF database schema

The BFF database schema is presented above (see db/migrations script).

By design, BFF knows very little about the scientific data and is only responsible for the users and access management.

On top of the users, the main concepts mapped onto the database are:

  • datasources (static data sent to the backend)
  • calculations (transitions of data into the other data)
  • collections (groups of the data)

Proxying

Note, that the non-versioned routes without /v0 will be redirected as is to the backend.

API

The docs are generated with the apidoc:

npm run apidoc

and, optionally, swagger:

npm run apidoc-swagger

Also, there is the Python API client metis-client (on PyPI) consuming all the public Metis API methods.

License

Copyright 2021-2023 BASF SE

BSD 3-Clause

metis-bff's People

Contributors

blokhin avatar dependabot[bot] avatar dxpm avatar knopki avatar paulmaly avatar pyoner avatar valexr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.