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.
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 startThis creates the data vault server, IdP server, and authorization server for:
| Name | WebID | 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 devThe 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 ./elevateThen install npm dependencies:
npm installStart the fill pod web UI from the elevate folder in another terminal:
cd ./fill-pod-web/
npm run fill-pod:webThe 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 startThis 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 startThis npm task will create a
./desktop/distoutput folder and re-compile bothappcoreanddesktopprojects 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:appThis section covers the environment setup to develop and build both desktop app and web extension.
The solution is cut in 3 folders/projects: the appcore, the desktop
Appcore contains core features like fitness trend, year progressions, athlete settings...
The Appcore main technology stack is:
- Typescript as programming language.
- Angular as frontend (build with @angular/cli).
- Angular Material for material designed components.
- Metrics Graphics, Plotly & D3 for charting.
- LokiJS as in-memory NoSQL database persisted in IndexedDB.
- Jest as Javascript test runner (instead of "stock" karma one).
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.
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:
- Open repository Settings > Pages
- Set Source to deploy from branch
develop(or your working branch) and folder/docs - Save and wait for GitHub Pages deployment to complete
