Local Solid Pod

I’ve finally had time to make a bridge between the file system and solid web apps. I split it into two parts, so it can be easily reused and modified if desired. The first one can be used to create a localhost server for a custom fetch method (e.g. solid-auth-cli). The second one gives it an UI.

Local Pod Manager

This makes it easy to serve a part of the file system as local solid pod. You can view the repository here.

# Usage
git clone https://github.com/otto-aa/solid-local-pod-manager
cd solid-local-pod-manager
npm install
npm start

Local Pod

This library can be used, to serve something on localhost. The only thing it requires for working is a suitable fetch method (similar signature as window.fetch and compliant to the solid rest api). You can use the solidFileFetch library I’ve added to it, or solid-auth-cli or a dropbox fetch (if you happen to have it solid complianat). The repo for it is here

const LocalPod = require('solid-local-pod')
const pod = new LocalPod({
    port: 3000,
    basePath: '/home/user/test',
    certs, // (Optional. If not provided it runs on http)
    fetch: solidFileFetch
})
pod.startListening()

Notes

The local pod manager uses the solid-local-pod/src/solidFileFetch method which covers most of the solid api specification (but not everything). I could navigate in the solid-filemanager and view the folder on Spoggy. But some things may be broken because the fetch method is not 100% compliant.

3 Likes

This looks cool. Is this in effect an alternative to running a solid server for say local testing? Any other use cases?

I think there are many different use cases. I’ve already discussed them in the other forum post (Back then I wanted to do it in the browser with web extensions, but I sadly didn’t find a way to do that).

In the same way the file systems gives multiple installed apps access to local data, a local pod could give online apps a controlled access to local pod data.

Main benefits (I see)

  • One can use linked data on the own file system and access it with (online/offline) apps
  • Common (solid like) interface for apps to access local file storage. The file storage can be seen just as any other solid pod and hence uploading/downloading files from/to an app would be easy.
  • Less bandwidth usage, because the files can be stored and used locally (-> less energey, faster, offline usage)
  • No need to trust and afford a pod provider for local projects (-> better data security and privacy)
  • Could be used to serve any cloud storage service (e.g. Dropbox) as a local solid pod

Possible benefits for developing:

  • Running tests locally (both automated tests (e.g. for solid-file-client) and manual tests (e.g. for solid-filemanager) (-> faster and
  • Can be tested against multiple fetch libraries which possibly all follow the spec, but maybe implement them slightly different. For instance if there was a NSS like fetch library and a Pod-Server like fetch library, one could run tests against both.

(For automated testing, it would probably be better to make use of solid-rest which doesn’t need to run over localhost)

I guess that there are more use cases, but these are the ones I have in mind for now.

4 Likes

Great thing @A_A ! Using local file system with linked data is what I always was dreaming of. Thanx to contribute :slight_smile:

A lot of useful apps could be developed on this. Just think about a file explorer and what possibilities there would be to connect to all kind of different things (users, documents, relations)