https://github.com/dasch-swiss/dsp-das
DaSCH application suite for the DaSCH Service Platform
https://github.com/dasch-swiss/dsp-das
data-management-platform web-application
Last synced: 5 months ago
JSON representation
DaSCH application suite for the DaSCH Service Platform
- Host: GitHub
- URL: https://github.com/dasch-swiss/dsp-das
- Owner: dasch-swiss
- License: apache-2.0
- Created: 2018-11-09T14:39:42.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2026-01-12T15:52:50.000Z (6 months ago)
- Last Synced: 2026-01-12T18:08:50.827Z (6 months ago)
- Topics: data-management-platform, web-application
- Language: TypeScript
- Homepage: https://docs.dasch.swiss/latest/DSP-APP/
- Size: 504 MB
- Stars: 13
- Watchers: 6
- Forks: 5
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# DaSCH Applications and Libraries Monorepo
[](https://github.com/dasch-swiss/dsp-das)
[](https://hub.docker.com/r/daschswiss/dsp-app)
[](https://github.com/dasch-swiss/dsp-das/actions?query=workflow%3ACI)
[](https://codecov.io/gh/dasch-swiss/dsp-das)
This monorepo hosts various libraries of the DaSCH Service Platform and it is built on:
- Nx - See [package.json](https://github.com/dasch-swiss/dsp-das/blob/main/package.json) for current version
- Angular - See [package.json](https://github.com/dasch-swiss/dsp-das/blob/main/package.json) for current version
- Node.js - Version managed via [.nvmrc](https://github.com/dasch-swiss/dsp-das/blob/main/.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](https://github.com/dasch-swiss/dsp-das/blob/main/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](https://github.com/dasch-swiss/dsp-das/blob/main/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](https://github.com/dasch-swiss/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](https://www.npmjs.com/package/@dasch-swiss/dsp-js)
to connect with [DSP-API](https://docs.dasch.swiss/latest/DSP-API/03-endpoints/api-v2/introduction/).
DSP-APP is [free software](http://www.gnu.org/philosophy/free-sw.en.html), released
under [GNU Affero General Public](http://www.gnu.org/licenses/agpl-3.0.en.html) license.
## User Quickstart
To try DSP-APP out the [DSP-API](https://github.com/dasch-swiss/dsp-api) backend should be started first:
In terminal go to DSP-API repository and start the API by running following commands:
```shell
$ make init-db-test
$ make stack-without-app
```
Once backend is up and running, in the second terminal instance start DSP-APP by running:
```shell
# 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](https://angular.dev/reference/versions).
The monorepo is implemented using [NX](https://nx.dev).
> **_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:
```bash
# 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](https://github.com/dasch-swiss/dsp-das/blob/main/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](https://github.com/dasch-swiss/dsp-das/blob/main/libs/vre/3rd-party-services/open-api/README.md) - 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):
```shell
$ npm run start-local-with-observability
```
This starts both the observability stack and the app. Access Grafana at [http://localhost:3001](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
➡ [for developers](https://docs.dasch.swiss/latest/DSP-APP/contribution)
## Contribution
If you would like to contribute to the development of the DSP-APP alongside us,
please follow the [general DSP contribution guidelines](https://docs.dasch.swiss/latest/developers/contribution/).
### Documentation
We built the developer documentation with [MkDocs](https://www.mkdocs.org/).
More information can be found in the specific [README](https://github.com/dasch-swiss/dsp-das/blob/main/docs/contribution/docs-documentation.md).