https://github.com/basf/metis-gui
Modular standalone fat-client GUI for X-ray diffraction data simulations, analysis, and sharing
https://github.com/basf/metis-gui
optimade optimade-api svelte sveltejs
Last synced: 7 days ago
JSON representation
Modular standalone fat-client GUI for X-ray diffraction data simulations, analysis, and sharing
- Host: GitHub
- URL: https://github.com/basf/metis-gui
- Owner: basf
- License: bsd-3-clause
- Created: 2021-11-23T22:34:46.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2026-01-22T02:19:35.000Z (3 months ago)
- Last Synced: 2026-03-28T07:42:38.531Z (13 days ago)
- Topics: optimade, optimade-api, svelte, sveltejs
- Language: Svelte
- Homepage:
- Size: 5.37 MB
- Stars: 8
- Watchers: 2
- Forks: 5
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Metis data management GUI
Metis is an open scientific framework, materials data organizer, and collaborative online platform for the nanotechnology research. It was designed for the offline physical and online virtual autonomous laboratories dealing with the materials science. 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. Its development was started in 2021 in BASF (Ludwigshafen am Rhein, Germany) by Bernd Hinrichsen and Evgeny Blokhin.

**This is the first part of the whole Metis infra: [GUI](https://github.com/basf/metis-gui) ⇄ [BFF](https://github.com/basf/metis-bff) ⇄ [backend](https://github.com/basf/metis-backend).**
This is the Svelte GUI for the Metis materials data server, highly modular, permissively licensed, minimalistically designed, based on the open [Svelte-Spectre](https://kit.metis.science) user interface kit. Supports various materials data formats, real-time cloud simulations, real-time collaborations, [Optimade](https://optimade.org) structure searches, content organizing and sharing, and many more. Displays the server events instantly as they occur, thanks to the [SSE](https://en.wikipedia.org/wiki/Server-sent_events) server push technology. The users are recognized via the third-party OAuth services, such as Microsoft, LinkedIn, GitHub, ORCID, MPDS, etc.
| |  |
|:---:|:---:|
| |  |
# Installation
```sh
git clone https://github.com/basf/metis-gui
cd metis-gui
npm install
```
# Technical details
## Development build
```sh
npm run dev
```
## Production build
```sh
npm run build
```
## Docker Image
**Warning!** Docker support is highly experimental.
The production build is packaged into the [nginx](https://hub.docker.com/_/nginx)
container. Inherits all of the parent image's configuration capabilities.
Additional configuration options:
- `HOST` - sets served hosts (default: `_` - catch all)
- `PORT` - listen port
- `FORCE_HTTPS` - redirects to https if set to `1`
- `REAL_IP_HEADER`, `SET_REAL_IP_FROM1`, ..., `SET_REAL_IP_FROM5` - options for
[real ip module](https://nginx.org/en/docs/http/ngx_http_realip_module.html)
- `PROXY_BFF_API_URL` - proxy `/api` to `metis-bff` if set
- `RUNTIME_CONFIG` - optional javascript object with runtime config, see `src/config.ts`
### docker compose
Example `compose.yml`:
```yaml
version: "3.9"
services:
metis-frontend:
build:
context: .
environment:
PORT: "8080"
FORCE_HTTPS: "0"
PROXY_BFF_API_URL: "http://metis-bff:3000"
METIS_RUNTIME_CONFIG: |
{
'API_HOST': location.origin.concat('/api'),
'IDPS': ['local'],
}
ports:
- "9080:8080"
```
## Buildtime config
`./app.config.js`
## Runtime config
`./src/config.ts`
## Sources folder layout
`assets` - static files etc.
`components` - low-level modules
`helpers` - auxiliary utils
`layouts` - CSS framework modules
`pages` - concrete content sections, collections of `views`
`services` - different APIs consumption
`stores` - where the data flow comes from
`types` - TS definitions
`views` - high-level (smarter) modules, cf. `components`
# License
Copyright 2021-2023 BASF SE
BSD 3-Clause