Skip to content

Latest commit

 

History

History
363 lines (260 loc) · 10.1 KB

File metadata and controls

363 lines (260 loc) · 10.1 KB

Solid Cockpit Header Logo

Solid Cockpit

Version Vue Vite License

Solid Cockpit is a Vue web application for interacting with Solid Pods: authentication, data upload, pod browsing, SPARQL query execution, query caching, and privacy/ACL management.

This application was developed in the context of the CHIST-ERA TRIPLE project.

Table of Contents

Users

What Solid Cockpit Does

Main capabilities:

  • Solid Pod login, session display, and pod registration/selection
  • File upload to typed or browsed pod container destinations
  • Pod browsing with filtering, metadata inspection, download, move, rename, and delete operations
  • SPARQL querying over Solid Pods, SPARQL endpoints, and mixed/federated sources
  • Query cache records with result previews, filtering, sorting, rename, sharing, and deletion
  • Privacy/ACL management with shared-with-me/shared-with-others records, notifications, and scheduled revocation

Accessing the App

Public deployment:

If you want to run locally, see Developers.

Ways to Get a Solid Pod

Usage Guides

In-app guides are available from the relevant page:

  • Home: app overview and embedded video demonstration
  • Data Upload: upload destination and file upload workflow
  • Pod Browser: container browsing and resource operations
  • Data Query: query execution, examples, query URLs, and cache workflow
  • Privacy Editing: ACL editing, notifications, sharing records, and revocation scheduling

Solid Pod VoID file generation:

Example:

mvn package
java -jar target/void-generator-0.7-SNAPSHOT-uber.jar \
  --from-solid-pod [URL-to-solid-pod] \
  --void-file void.ttl \
  -i [URL-to-solid-pod]/void.ttl \
  --repository [URL-to-solid-pod]

Then upload void.ttl to the pod root using the app's Data Upload page.

Citation

If you use this tool in an academic publication, you can cite:

Crum, E. (2026). Solid Cockpit (Version 1.0.0) [Software]. GitHub. https://github.com/KNowledgeOnWebScale/solid-cockpit

BibTeX:

@misc{solidcockpit_2026,
  author       = {Crum, Elias},
  title        = {{Solid Cockpit}},
  year         = {2026},
  version      = {1.0.0},
  publisher    = {GitHub},
  howpublished = {\url{https://github.com/KNowledgeOnWebScale/solid-cockpit}},
  note         = {Software. Web app: \url{https://knowledgeonwebscale.github.io/solid-cockpit}. Accessed: 2026-03-04}
}

You can also use:

  • CITATION.cff for GitHub-style citation metadata
  • CITATION.bib for direct BibTeX import

Contact and Support

Developers

Tech Stack

  • Vue 3 + Vite 6
  • TypeScript
  • Vuetify 3
  • Pinia
  • Inrupt Solid client/auth libraries
  • Comunica SPARQL engine
  • YASQE/YASR query editor and result viewers
  • npm-managed dependency workflow

Source Layout

  • src/components/: Vue UI components only
  • src/services/solid/: Solid auth, pod access, upload, and ACL helper modules
  • src/services/query/: query execution, parsing, and worker code
  • src/stores/: Pinia state modules

Prerequisites

  • Node.js 22.x (LTS recommended)
  • npm 10+ (repo now uses package-lock.json)
  • Do not use Yarn for this repo; npm is the supported package manager.

Node 24 note:

  • @inrupt/solid-client@3.x currently declares support for Node ^20 || ^22, so this repo pins to Node 22 for strict engine compatibility.

Local Setup

Install dependencies:

npm install

Run locally:

npm run dev

Build production assets:

npm run build

If you hit a Node heap out-of-memory error during production builds, rerun with an increased heap size:

NODE_OPTIONS=--max-old-space-size=8192 npm run build

Preview production build:

npm run serve

Scripts

Script Description
npm run dev Start Vite development server
npm run build Build production assets into dist/
npm run build:highmem Build production assets with an 8GB Node heap
npm run serve Preview the production build locally
npm run test:unit Run unit tests (Node built-in runner + TS loader)
npm run test:unit:watch Run unit tests in watch mode
npm run test:unit:coverage Run unit tests with coverage report generation
npm run test:unit:compliance Enforce unit-test + coverage thresholds
npm run test:unit:compliance:quiet Enforce unit coverage with concise output
npm run test:component Run Vue component tests (.vue) via Vitest
npm run test:component:watch Run Vue component tests in watch mode
npm run test:component:coverage Run Vue component tests with coverage
npm run test:component:compliance Enforce Vue component test coverage thresholds
npm run test:component:compliance:quiet Enforce component coverage with concise output
npm run test:compliance Run full (unit + component) compliance checks
npm run test:compliance:quiet Run full compliance checks with concise output
npm run hooks:install Configure local git hooks path (.githooks)
npm run github-post-build Create route-compatible index.html copies in dist/
npm run deploy Publish dist/ to GitHub Pages

Testing and Coverage

Unit test suite:

  • Location: tests/unit/
  • Command: npm run test:unit

Component test suite:

  • Location: tests/components/
  • Command: npm run test:component
  • Includes focused ThemeSwitch + TheFooter tests and full .vue smoke mounts in tests/components/AllComponentsSmoke.test.ts

Coverage tracker:

npm run test:unit:coverage

This command:

  • runs the unit test suite with Node coverage enabled
  • writes machine-readable output to coverage/unit-coverage-summary.json
  • writes a readable summary to coverage/unit-coverage-summary.txt

Compliance thresholds (gating):

  • line coverage: 98%
  • branch coverage: 90%
  • function coverage: 100%

Tracked files:

  • src/services/solid/fileUploadUtils.ts
  • src/services/solid/mime_types.js
  • src/services/query/queryPodUtils.ts
  • src/services/query/z3-headers.ts

Advisory (non-gating) coverage is also reported for:

  • src/services/solid/login.ts
  • src/services/solid/getData.ts
  • src/services/solid/privacyEdit.ts

Override thresholds with env vars:

  • UNIT_COVERAGE_LINES
  • UNIT_COVERAGE_BRANCHES
  • UNIT_COVERAGE_FUNCS

Git Workflow

Commit-time compliance check:

  • Hook file: .githooks/pre-commit
  • Command run by hook: node ./scripts/precommit-compliance.mjs
  • Hook output is intentionally concise on pass and detailed on failure.

Install hooks locally:

npm run hooks:install

If automatic hook setup is blocked in your environment:

git config --local core.hooksPath .githooks

CI compliance check:

  • Workflow: .github/workflows/unit-test-compliance.yml
  • Enforces unit tests, component tests, and coverage thresholds.

Web-App Version Tags

Current app version:

  • package.json version: 1.0.0
  • web-app release tag convention: web-app-v<version>
  • current computed web-app tag: web-app-v1.0.0

In-app visibility:

  • Footer displays semantic version (vX.Y.Z) and computed release tag (web-app-vX.Y.Z)
  • Values are injected at build time from package.json via Vite defines

Recommended release workflow:

  1. Update version:
npm version X.Y.Z
  1. Build and validate:
npm run test:unit
npm run build:highmem
  1. Create and push release tags:
git tag vX.Y.Z
git tag web-app-vX.Y.Z
git push origin vX.Y.Z web-app-vX.Y.Z

Deployment

GitHub Pages deployment setup:

  • vite.config.js uses /solid-cockpit/ base path for production
  • npm run github-post-build prepares route folders in dist/
  • npm run deploy publishes dist/ via gh-pages

Dependency Versions

Direct dependency versions currently declared in package.json.

Runtime dependencies:

Package Version
@comunica/context-entries ^5.2.0
@comunica/logger-pretty ^5.2.0
@comunica/query-sparql ^5.2.0
@comunica/query-sparql-solid ^5.0.1
@inrupt/solid-client ^3.0.0
@inrupt/solid-client-authn-browser ^4.0.0
@inrupt/solid-client-authn-node ^4.0.0
@mdi/font ^7.4.47
@triply/yasqe ^4.2.28
@triply/yasr ^4.2.28
@vitejs/plugin-vue ^5.2.3
@vue/eslint-config-typescript ^9.1.0
actor-query-process-remote-cache ^0.1.0
core-js ^3.8.3
fs ^0.0.1-security
material-icons ^1.13.14
pinia ^2.3.1
query-sparql-remote-cache ^0.0.9
sparqljs ^3.7.3
vite ^6.2.3
vue ^3.2.13
vue-router ^4.5.1
vuetify ^3.5.14
z3-solver ^4.15.3

Development dependencies:

Package Version
@tsconfig/node22 ^22.0.2
@typescript-eslint/eslint-plugin ^5.4.0
@typescript-eslint/parser ^5.4.0
@vitest/coverage-istanbul 2.1.9
@vue/test-utils 2.4.6
eslint ^7.32.0
eslint-config-prettier ^8.3.0
eslint-plugin-prettier ^4.0.0
eslint-plugin-vue ^8.0.3
gh-pages ^5.0.0
jsdom 24.1.3
prettier ^2.4.1
typescript ^5.0.0
vitest 2.1.9

Contributing

  • Open pull requests against the main branch
  • Use GitHub Issues for bug reports
  • Use GitHub Discussions for broader questions and ideas