Hello, I’m interested in learning how to develop Solid apps.
What is the minimum technology stack requirement, and which development tools do you recommend? e.g. Eclipse, Codium, other?
Thanks
This is a biased answer because I developed the devtool, but I recommend Linked Data Objects (LDO). Again biased, but I think it’s the easiest way to manipulate data in Solid.
You can download it here: https://www.npmjs.com/package/ldo
There’s step-by-step instructions to build a React App using it here: Building Solid Apps with LDO. Solid is a decentralized web framework… | by Jackson Morgan | Medium
And a video primer here: I made it easier to work with this decentralized platform - YouTube
For browser-based apps, the Inrupt package @inrupt/solid-client-authn-browser
is quite widely used, regardless of whether or not the app uses the other Inrupt SDKs or not.
Personally, I’d recommend a stack of vite + react + react-router
, as the new loaders & actions in react-router seem to lend themselves particularly well to building apps, particularly those using Solid. You may face some issues with react frameworks that do server-side rendering, such as Next.js, Remix or Create-React-App (you essentially need to opt-out of the server-side rendering).
That said, there are folks that use just vanilla javascript (though, in my opinion, that’s more complex as your managing data + authentication + UI all combined)
There are even some folks that do server-rendered apps, but I don’t know of a guide for that off top of head. Inrupt has a full guide using our packages over at: Introduction — Inrupt JavaScript Client Libraries
As for your editor, take your pick — I personally use VS Code.
There’s also a fuller list of tools at: Tools and libraries overview · Solid
For a query style approach to interacting with data in Solid I can recommend using
@comunica/query-sparql-solid - npm; which also uses @inrupt/solid-client-authn-browser
for authentication.
There are experimental abstraction layers on top of the query engine such as LDflex. This video gives a sample of what is possible with that combination of tooling.
Editor
If you are using vscode then I recommend installing Linked Data Extension - Visual Studio Marketplace, and also will note that there are some experimental solid-specific extensions in the works that you will be able to make use of as well.
If you’re comfortable with more experimental software, Comunica also has an experimental traversal-based Solid query engine: @comunica/query-sparql-link-traversal-solid
.
The idea here is that you just execute a SPARQL query against the root of your pod’s storage, and the engine will traverse through all (relevant) documents inside your pod to find data.
This makes it so that you don’t have to know beforehand in what document the data you want to find exists.
More details can be found on the Comunica website.
@jaxoncreed, @ThisIsMissEm, et.al. Thanks for your recommendations. I’ll check them out.
Hi @jeswr, I can install the Linked Data Extension in VS Code, but not VSCodium.
I thought they were supposed to be identical. Only Codium is fully open source and doesn’t track data.
Any ideas why the extension won’t work in Codium?
Thanks
I should clarify that the Linked Data Extension doesn’t show up when you search the extension marketplace.
Hey, jumping in for Jesse here, but vscodium doesn’t use the VS Code extension marketplace, as documented here: vscodium/DOCS.md at master · VSCodium/vscodium · GitHub
Essentially extensions need to be published on their marketplace, as well, in order to be used by vscodium
I’ve opened up an issue in (Release extension on openvsx marketplace · Issue #6 · elsevierlabs-os/linked-data · GitHub) to ask the authors to publish to the openvsx marketplace
Thanks for your speedy replies @ThisIsMissEm and @jeswr.
And thanks for opening an issue with elsevierlabs-os/linked-data on github.
In the meantime I found a workaround.
I have a follow-up question to the Solid Project dev stack:
what are you using as an RDF triple store or a graph database?
Has anyone here used StarDog.com for non-sensitive data?
Thanks
Before answering the question directly, can I first ask what do you need the graph database for?
In the context of Solid you would be pointing to a Solid Pod provider (public instances are listed here Get a Pod · Solid, or you could spin up a local instance of the Community Solid Server implementation for testing - note that the CSS does support using a triplestore as a storage backend).
You can then query over the documents in the Pod using SPARQL via tools like Comunica with link traversal enabled, and APIs like the Inrupt QPF API can be used to optimise that query process by saving the query engine from needing to traverse the document in the Pod.
Edit: For details/clarifications on my statement above I would encourage you to read What's in a Pod?.