Read-only mirror of https://github.com/SwissFederalArchives/lindas-cube-creator — Schweizerisches Bundesarchiv. Issues & pull requests at the source.
  • TypeScript 81.4%
  • Vue 16.5%
  • JavaScript 0.7%
  • Dockerfile 0.5%
  • Shell 0.5%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-04-30 09:24:27 +02:00
.changeset chore: release 2026-04-28 23:34:05 +02:00
.github ci: fix build error 2026-04-13 14:30:49 +02:00
.husky chore: add lint in precommit 2023-01-12 11:19:57 +01:00
apis [#lindassup-288] normalizing IRIs from hierarchy proxy URL 2026-04-30 09:24:27 +02:00
cli ci: fix build error 2026-04-13 13:37:52 +02:00
docker refactor: cleanup code formatting and configs 2025-11-12 15:42:26 +01:00
docs ci: Comprehensive GitHub Actions CI/CD restructuring and fixes 2025-11-12 20:43:48 +01:00
e2e-tests ci: fix tests 2026-04-13 12:06:16 +02:00
fuseki ci: fix tests 2026-04-13 12:06:16 +02:00
minio/cube-creator ci: fix tests 2026-04-13 12:06:16 +02:00
nginx Setup local offline environment 2025-11-18 17:32:19 +01:00
otel chore(cli): fix export of metrics and traces 2023-03-02 09:22:39 +01:00
packages ci: fix tests 2026-04-13 12:06:16 +02:00
patches fix: patch sentry 2026-03-08 21:09:08 +01:00
smoke-test Fix remaining port 3000 references to 45670 2025-12-04 15:41:22 +01:00
test-data handover commit 2026-03-30 09:34:58 +02:00
typings build(deps): remove old rdf-js packages (closes #1482) 2024-02-09 12:39:50 +01:00
ui handover commit 2026-03-30 09:34:58 +02:00
.dockerignore build: remove cli output from docker 2021-08-12 12:33:20 +02:00
.editorconfig
.eslintignore fix: bundle cube.link validation shapes locally 2026-01-29 16:30:35 +01:00
.eslintrc.json handover commit 2026-03-30 09:34:58 +02:00
.gitignore fix: exclude Removed/ directory from git tracking 2026-01-29 18:26:28 +01:00
.gitmodules fix: replace bundled SHACL shapes with lindas-cube-link git submodule 2026-03-06 14:27:54 +01:00
.lando.yml ci: fix tests 2026-04-13 12:06:16 +02:00
.local.env ci: fix tests 2026-04-13 12:06:16 +02:00
.nvmrc build: ensure node 18 locally 2024-09-23 12:14:56 +02:00
api.Dockerfile chore: cleanup 2026-02-10 20:19:28 +01:00
app.Dockerfile ci: fix build error 2026-04-13 13:59:20 +02:00
app.Dockerfile.local Fix remaining port 3000 references to 45670 2025-12-04 15:41:22 +01:00
babel.config.json
changelog.md fix: replace bundled SHACL shapes with lindas-cube-link git submodule 2026-03-06 14:27:54 +01:00
cli.Dockerfile ci: fix build error 2026-04-13 13:59:20 +02:00
codecov.yml
docker-compose.e2e.yml feat: adding SPARQL query logger 2026-01-25 22:06:29 +01:00
docker-compose.local.yml Update docker-compose files to use port 45670 2025-12-04 15:25:13 +01:00
docker-compose.offline.yml feat: GraphDB updates (round 2) (#14) 2026-01-22 22:36:24 +01:00
docker-compose.posix.yml ci: fix tests 2026-04-13 12:06:16 +02:00
docker-compose.test.yml Add end-to-end test stack for cube-creator images 2026-02-15 14:56:02 +01:00
docker-compose.yml ci: fix tests 2026-04-13 12:06:16 +02:00
LICENSE refactor: cleanup code formatting and configs 2025-11-12 15:42:26 +01:00
mocha-setup.js Csv datatypes (#1551) 2024-11-04 10:24:17 +01:00
package.json ci: fix build error 2026-04-14 08:05:27 +02:00
README.md ci: fix tests 2026-04-13 12:06:16 +02:00
setup-local-env.ps1 Fix remaining port 3000 references to 45670 2025-12-04 15:41:22 +01:00
setup-local-env.sh Fix remaining port 3000 references to 45670 2025-12-04 15:41:22 +01:00
test-local.sh Fix remaining port 3000 references to 45670 2025-12-04 15:41:22 +01:00
tsconfig.json fix: cube-link without JS 2026-03-06 15:09:43 +01:00
yarn.lock ci: fix build error 2026-04-13 21:39:10 +02:00

Cube Creator

Cube Creator is a tool to create RDF data Cubes (based on rdf-cube-schema) out of CSV files.

Technologies

The tool is built with Typescript and is currently composed of two main parts: a Hydra API (built with hydra-box) and a Vue.js user interface. See the Architecture document for a high-level overview.

Running locally

Preparing the environment

To be able to run transform/publish pipelines locally, an OIDC secret must be added to cli/.env as

AUTH_RUNNER_CLIENT_SECRET=foo-bar

It is obtained from keycloak

Alternatively, you can bypass authentication altogether by setting the environment variables in .env similar to the following example:

VUE_APP_E2E=true
VUE_APP_X_USER=john-doe
VUE_APP_X_PERMISSION=pipelines:read,pipelines:write

If you have already started the application, make sure to run lando rebuild -y to apply the changes.

Publishing to an RDF Store

Cube publishing uses separate graph store protocol and query endpoints.

PUBLISH_GRAPH_STORE_ENDPOINT=
PUBLISH_GRAPH_QUERY_ENDPOINT=
PUBLISH_GRAPH_STORE_USER=...
PUBLISH_GRAPH_STORE_PASSWORD=...

If you pass publishStore in job configuration, use: storeEndpoint and queryEndpoint.

Starting

The easiest way it to start a local dockerized environment which will run the database, API and UI, and provide set up local HTTPS endpoints for them.

  1. Download and install lando
    • it will install docker desktop if necessary
  2. Run yarn to install packages
  3. Run lando start inside the repo
    • Docker daemon is also started automatically
  4. (Optional) Run yarn seed-data to add sample projects to the database

Docker containers will start and the services will be available under the these URLs:

Service URL
API https://cube-creator.lndo.site/
UI https://app.cube-creator.lndo.site/
Fuseki https://db.cube-creator.lndo.site/
Minio https://s3.cube-creator.lndo.site/
Jaeger http://jaeger.cube-creator.lndo.site
Prometheus http://prometheus.cube-creator.lndo.site

Lando uses its own Certificate Authority and it won't be trusted by your system. To trust the CA, follow the steps on https://docs.lando.dev/config/security.html#trusting-the-ca

Workflow

This repository is using the GitHub-Flow. Hence all changes should be integrated using pull requests.

Commit messages usually follow the guidelines from Conventional Commits with the types in lower case.

To submit a bug or a feature request please create an issue in this repository.

Release process

All notable changes to the project(s) should be documented using @atlassian/changesets. When preparing a PR, run yarn changeset in the repository which will ask what changed, the affected packages, and create a small markdown file which must be committed to the repository.

Alternatively, that file can be created directly in the browser, courtesy of Changesets bot which creates PR comment summarising the changes included in the PR in question.

Releases are managed automatically by GitHub actions. As PRs get merged to master, the first job creates or updates a pull request which bumps package versions according to the combined information from all accumulated changeset files. Once merged, the second job kicks in which tags the repository and triggers INT deployment.

The package versions can also be bumped manually by running yarn changeset version in the repository and committing the result. When pushed, the new versions will be picked up by the aforementioned GitHub workflow job to tag the respository.

E2E tests

There are two types of e2e tests:

  • API (Hydra): e2e tests that take the API as entrypoint
  • UI (Cypress): browser-based e2e tests

API e2e tests

Running the E2E tests can be done using: docker compose run --rm e2e-tests, and docker compose run --rm e2e-tests -- --grep pattern lets you select which tests to run.

For brevity, use npm script npm run test:e2e --grep pattern

UI e2e tests

We use Cypress to run UI e2e tests.

To simplify the tests, we circumvent authentication in the app. For that, the following variables need to be set in .env before running the UI:

VUE_APP_E2E=true
VUE_APP_X_USER=john-doe
VUE_APP_X_PERMISSION=pipelines:read,pipelines:write

We need a running instance of the app to test. The easiest way is to start lando: lando start

Then the following command can be used to run the tests interactively:

yarn --cwd ui test:e2e --url https://app.cube-creator.lndo.site

The --headless option allows running the tests without seeing the browser.