Skip to content

DaSCH Applications and Libraries Monorepo

Github Docker CI codecov

This monorepo hosts various libraries of the DaSCH Service Platform and it is built on:

Install libraries

To install all libraries and external dependencies just run npm install.

Quick Commands

Most common operations for daily development:

Task Command
Install dependencies npm install
Start local development npm run start-local
Start with observability npm run start-local-with-observability
Run tests npm run test-local
Run all tests (CI mode) npm run test-ci-all
Lint all libs w/o auto-fix npm run lint-all
Lint all libs with auto-fix npm run lint-fix-all
Open E2E tests UI npm run e2e-local
Run E2E tests (headless) npm run e2e-ci
Build for development npm run build
Build for production npm run build-prod
Generate test coverage npm run unit-test-coverage

For all available commands, see package.json.

@dasch-swiss librairies

For more information about specific library, please go to its readme, e.g.:

DSP-APP — generic user interface of DaSCH Service Platform

DSP (DaSCH Service Platform) is a software framework for storing, sharing, and working with primary resources and data in the humanities.

DSP-APP is a simple user interface for the research data repository of the Swiss National Data and Service Center for the Humanities (DaSCH), which uses the DSP-API server application in the backend. It's a system for annotation and linkage of resources in arts and humanities.

DSP-APP implements DSP-JS to connect with DSP-API.

DSP-APP is free software, released under GNU Affero General Public license.

User Quickstart

To try DSP-APP out the DSP-API backend should be started first:

In terminal go to DSP-API repository and start the API by running following commands:

$ make init-db-test
$ make stack-without-app

Once backend is up and running, in the second terminal instance start DSP-APP by running:

# come back to this repository and start the DSP-APP
$ npx nx run dsp-app:serve

Developer Quickstart

It is recommended to use Node.js version which is supported by installed Angular version.

The monorepo is implemented using NX.

NOTE: to run nx commands install it globally npm install -g nx or instead use npx.

Working with Individual Libraries

The monorepo contains multiple libraries that can be developed independently. To work with specific libraries:

# Test a specific library
nx run [library-name]:test

# Build a specific library
nx run [library-name]:build

# Lint a specific library
nx run [library-name]:lint

# Example: Test the calendar library
nx run jdnconvertiblecalendar:test

Available libraries: - See tsconfig.base.json for all library path aliases under the paths configuration - Main VRE libraries are under @dasch-swiss/vre/* namespace - Standalone libraries: @dasch-swiss/jdnconvertiblecalendar, @dasch-swiss/jdnconvertiblecalendardateadapter

OpenAPI Client Generation

For API client generation and maintenance: - OpenAPI Client Generation - Auto-generated TypeScript client for DSP-API

IDE plugins

  • https://plugins.jetbrains.com/plugin/15101-nx-console-idea
  • https://marketplace.visualstudio.com/items?itemName=nrwl.angular-console

Local Observability

For local development, you can run a Grafana observability stack to view Faro telemetry data (logs, traces, Web Vitals):

$ npm run start-local-with-observability

This starts both the observability stack and the app. Access Grafana at http://localhost:3001 (credentials: admin/admin). The stack includes Loki for logs, Tempo for traces, and Mimir for metrics. To stop: docker compose -f docker-compose.observability.yml down

For detailed configuration and troubleshooting, see the inline documentation in docker-compose.observability.yml and apps/dsp-app/src/config/config.dev.json.

Further Documentation

User guide

for latest released version

Developer docs

for developers

Contribution

If you would like to contribute to the development of the DSP-APP alongside us, please follow the general DSP contribution guidelines.

Documentation / User guidelines

We built the user guidelines and developer documentation with MkDocs. More information can be found in the specific README.