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
To install all libraries and external dependencies just run npm install.
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.
For more information about available libraries, see the VRE libraries under libs/vre/ and the library path aliases in tsconfig.base.json.
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.
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-appOnce 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:serveIt 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.
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:testAvailable libraries:
- See tsconfig.base.json for all library path aliases under the
pathsconfiguration - Main VRE libraries are under
@dasch-swiss/vre/*namespace
For API client generation and maintenance:
- OpenAPI Client Generation - Auto-generated TypeScript client for DSP-API
- https://plugins.jetbrains.com/plugin/15101-nx-console-idea
- https://marketplace.visualstudio.com/items?itemName=nrwl.angular-console
For local development, you can run a Grafana observability stack to view Faro telemetry data (logs, traces, Web Vitals):
$ npm run start-local-with-observabilityThis 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.
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.
If you would like to contribute to the development of the DSP-APP alongside us, please follow the general DSP contribution guidelines.
We built the developer documentation with MkDocs. More information can be found in the specific README.