Skip to content

KNowledgeOnWebScale/solid-cockpit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

286 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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/[email protected] 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

About

A web application for piloting your Solid Pod (including data upload and management, data privacy editing and notifications, and SPARQL querying via Comunica).

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors