Skip to content

Latest commit

 

History

History
126 lines (92 loc) · 4.65 KB

File metadata and controls

126 lines (92 loc) · 4.65 KB

Elevate

This repository demonstrates a dashboard that stores and visualizes sports and activity data in Solid Pods. It shows how decentralized data pods, Incremunica, and aggregators can be combined to build a high-performance dashboard app with rich insights and visualizations.

Youtube Video

Run demo

You will need to install NodeJS (v20+).

Run the following commands in another terminal:

git clone --branch elevate-demo https://github.com/maartyman/user-managed-access
cd user-managed-access
corepack enable
yarn install
yarn build
yarn start

This creates the data vault server, IdP server, and authorization server for:

Name WebID Email Password
alice http://localhost:3000/alice/profile/card#me alice@example.org abc123
bob http://localhost:3000/bob/profile/card#me bob@example.org abc123
demo http://localhost:3000/demo/profile/card#me demo@example.org abc123

Start Loama to provide the UI for policies in another terminal:

git clone https://github.com/maartyman/loama
cd loama
npm install
npm run dev

The Loama policy management client can be opened on http://localhost:5173/.

Now clone this Elevate repository:

git clone https://github.com/SolidLabResearch/elevate.git
cd ./elevate

Then install npm dependencies:

npm install

Start the fill pod web UI from the elevate folder in another terminal:

cd ./fill-pod-web/
npm run fill-pod:web

The fill pod application to upload some FIT files to your data vault can then be opened on http://localhost:4317.

Start the Aggregator server from the elevate folder in another terminal:

cd ./aggregator/
npm run build && npm run start

This server will convert the FIT files to RDF and write them back to the data vault.

Finally start elevate, all commands bellow will need to be executed in ./desktop/ folder. So:

cd ./desktop/

Run in development:

npm start

This npm task will create a ./desktop/dist output folder and re-compile both appcore and desktop projects on any code changes, but it might take a while before you can start the app.

To open the desktop app, open another terminal, then run:

npm run launch:dev:app

Development

This section covers the environment setup to develop and build both desktop app and web extension.

Global solution structure

The solution is cut in 3 folders/projects: the appcore, the desktop

App-core project

Appcore contains core features like fitness trend, year progressions, athlete settings...

The Appcore main technology stack is:

Desktop project

Holds the container behaviour to provide a cross-platform desktop app under Windows, Linux & MacOS. It contains desktop specific features like connectors synchronization (to fetch athlete activities from external).

The Desktop main technology stack is:

  • Typescript as programming language.
  • Jest as Javascript test runner.
  • Electron as cross-platform desktop container.
  • Electron-builder to build, sign and publish installers per platform. Also handle app updates process (via electron-updater).
  • Rollup.js to load & bundle modules.
  • Vue.js for splash-screen update window.

Solid OIDC Client Metadata

The Solid connector uses a hosted client metadata document:

https://solidlabresearch.github.io/elevate/client-id.jsonld

The source file lives at docs/client-id.jsonld.

To publish/update this URL from this repository:

  1. Open repository Settings > Pages
  2. Set Source to deploy from branch develop (or your working branch) and folder /docs
  3. Save and wait for GitHub Pages deployment to complete