This repository contains the Portal of DNPM:DIP.
Table of Contents
The repository contains the following packages:
- @dnpm-dip/core: This package contains common constants, functions, types, ...
- @dnpm-dip/kit: This package contains utilities to register dnpm dip modules to the portal.
- @dnpm-dip/portal: This package contains the User Interface (UI).
- @dnpm-dip/admin: This package contains the admin module.
- @dnpm-dip/rd: This package contains the module for Rare Diseases (RD).
- @dnpm-dip/mtb: This package contains the module for Molecular Tumor Boards (MTBs).
Prerequirements
- Docker v.24+ must be installed on the host machine
Run
$ docker run -d -p 3000:3000 \
--restart=always \
ghcr.io/dnpm-dip/portal:latestThe portal is configured at runtime via environment variables (pass them with docker run -e ...):
| Variable | Default | Description |
|---|---|---|
NUXT_PUBLIC_API_URL |
https://dnpm-dip.net/api/ |
REST API base URL |
NUXT_PUBLIC_AUTHUP_URL |
https://dnpm-dip.net/auth/ |
Authup base URL |
NUXT_PUBLIC_AUTHUP_CLIENT_ID |
web |
OAuth2 client used for the login (authorization-code) flow |
NUXT_PUBLIC_AUTHUP_REALM_ID |
master |
Realm (UUID or name) that owns the OAuth2 client |
NUXT_PUBLIC_COOKIE_DOMAIN |
— | Cookie domain for the auth session |
The portal signs in with the OAuth2 Authorization Code flow (PKCE) — credentials are
never entered in the portal UI. DNPM:DIP runs a single (master) realm, so the login page
shows a single sign-in action rather than a realm picker; the portal builds an authorize URL
and redirects to Authup's /authorize endpoint, where the login form and the configured
identity providers live. Authup redirects back to <portal-origin>/login/callback, and the
@authup/client-web-nuxt routing interceptor exchanges the authorization code for a session.
The OAuth client is configurable via NUXT_PUBLIC_AUTHUP_CLIENT_ID (default: web, the
Authup built-in web client). The configured client must register
<portal-origin>/login/callback as an allowed redirect URI, or Authup rejects the redirect.
A name-identified client (such as the built-in web) exists in every realm, so the authorize
request carries a realm hint — NUXT_PUBLIC_AUTHUP_REALM_ID (default: master, the single
DNPM:DIP realm), a realm UUID or name — otherwise Authup responds with "A realm is required to
resolve a client by name."
To start the portal with the associated modules such as rd, mtb, etc, the following steps must be performed in sequence.
Prerequirements
- Node.js v.18+ must be installed on the host machine
Download
$ git clone https://github.com/dnpm-dip/portal
$ cd dnpm-dip-portalInstallation
The following step installs all dependencies and dev dependencies necessary for the execution and development of the ecosystem.
$ npm iBuild
The following step creates an initial build of all packages.
$ npm run buildRun
The following step is necessary to start the portal in development mode and the related features like hot module replacement (HMR).
$ npm run dev --workspace=packages/portalIf you have any questions, feel free to contact the author & creator Peter Placzek of the project. The project is being developed as part of the author's master's thesis.
Made with 💚
Published under MIT License.