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.
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.
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.
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)