Looking for the User Guide? Visit the Knowledge Hub at dasch.swiss for end-user documentation.
DaSCH Applications and Libraries Monorepo
This monorepo hosts various libraries of the DaSCH Service Platform and it is built on:
- Nx - See package.json for current version
- Angular - See package.json for current version
- Node.js - Version managed via .nvmrc file
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 available libraries, see the VRE libraries under libs/vre/ and the library path aliases in tsconfig.base.json.
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
nxcommands install it globallynpm install -g nxor instead usenpx.
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 date-picker library
nx run vre-ui-date-picker: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
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.
CI/CD Workflows
The project uses GitHub Actions with three focused workflows:
- CI (
.github/workflows/ci.yml) - Runs on all pushes (including PR branches): linting, unit tests, E2E tests, OpenAPI validation, docs build - Deploy (
.github/workflows/deploy.yml) - Runs after CI passes on main or on tag pushes: Docker image publish, DEV deployment trigger, release notifications - Release (
.github/workflows/release.yml) - Automated release management with release-please on main branch
All workflows use npm ci with caching for fast, deterministic builds and include memory optimizations to prevent CI failures.
Further Documentation
Developer docs
Contribution
If you would like to contribute to the development of the DSP-APP alongside us, please follow the general DSP contribution guidelines.
Documentation
We built the developer documentation with MkDocs. More information can be found in the specific README.