solid-panes

A set of core solid-compatible applets based on solid-ui

These are a set of interlinked applications, or parts of applications, which called ‘panes’ – as in parts of a window. A pane displays a data object of certain class using part of the window. They don’t tile like window panes necessarily, but one pane can involve other panes to display objects related to the main object, in all kinds of creative ways. You can give the sub-pane a bit of HTML DOM element to work in, and the data object, and it does the rest.

You can explicitly invoke a specific sub-pane, or you can just provide a DOM element to contain it, and ask the pane system to pick the appropriate pane. It does this by calling each potential pane in order with the object, and asking whether it wants to render that object. Typically the pane chosen is the most specific pane, so typically a hand-written user interface will be chosen over a generic machine-generated one.

These panes are used in the Data Browser - see mashlib https://github.com/linkeddata/mashlib

Currently the panes available include:

The solid-app-set panes are built using a set of widgets and utilities in https://github.com/linkeddata/solid-ui

To help onboarding, we’re using roles to limit the number of panes presented to new users.

Goals

Volunteers are always welcome!

Documentation

Development

To get started, make sure you have Node.js installed (for instance through nvm), then:

  1. Clone, install, and start the dev server:
git clone https://github.com/solidos/solid-panes
cd solid-panes
npm install
npm start
  1. Open http://localhost:5173 in your browser. You should see the pane development sandbox.

  2. You can change the subject in the sandbox to determine which pane gets rendered. For example, the default subject loads the profile-pane.

Contributing panes

When you created a pane, you can either add it as an npm dependency of this repo (for instance meeting-pane, issue-pane, chat-pane are all imported in src/registerPanes.js), or add it under the src/ tree of this repo.

Eg. some RDF CLasses

Here, just to show how it works, are how some RDF Classes map onto panes. Anything to do with contacts (A VCARD Address Book, Group, Individual, Organization) can be handled by the one contact pane. Any other pane which wants to deal with contacts can just use the pane within its own user interface.

Mapping many classes on the L to panes on the R

Generative AI usage

The SolidOS team is using GitHub Copilot integrated in Visual Studio Code. We have added comments in the code to make it explicit which parts are 100% written by AI.

Prompt usage hitory: