kadaster-labs / solid-quest

Our journey on SOLID
https://labs.kadaster.nl/cases/Solid-Pods
MIT License
3 stars 1 forks source link

Demonstrator Koopovereenkomst Solid App | Set up #4

Closed marcvanandel closed 1 year ago

marcvanandel commented 1 year ago

We zullen 'dus' (zie focusdag 3 en eerdere focusdagen) een 'Koopovereenkomst App' moeten ontwikkelen. Ik stel voor om deze te 'dopen' met de naam Demonstrator Koopovereenkomst Solid App. We zouden (tzt) ook de repo zo kunnen hernoemen en zelfs verplaatsten naar Zorgeloos Vastgoed.

Dit issue bevat overwegingen en discussie om tot een juiste opzet te komen van de app:

marcvanandel commented 1 year ago

Technische stack thread

marcvanandel commented 1 year ago

We hebben 'dus' (zie focusdag 3 en eerder) een 'Koopovereenkomst App' nodig. Ik stel voor om deze Demonstrator Koopovereenkomst Solid App te noemen. Zo zou die repo eventueel ooit eens naar Zorgeloos Vastgoed kunnen verschuiven ;)

Volgens mij kunnen we uit de voeten met een 'static web app'. Dat wil zeggen dat er geen server of backend nodig is. Alle data wordt opgeslagen in Solid PODs en kan elke keer opgehaald worden voor elke gebruiker. Er is altijd een log in nodig en daarin zou het altijd bekend moeten zijn aan welke koopovereenkomst gewerkt wordt en dus ook vanuit welke POD Makelaarskantoor deze geladen moet worden. En daarin zitten dan weer de verwijzingen naar de andere PODs.

Dat wil zeggen dat we alleen maar een WebApp nodig hebben en een server om dat te kunnen laden. GitHub Pages zou dan al voldoende zijn als server. Verder geen backend.

Voor de technische stack zou ik graag willen kiezen voor React (eigenlijk ReactJS). Alternatieven zijn Angular en Vue, waarbij Angular groot en complex is - wat we niet nodig hebben, denk ik - en waarbij Vue nieuwer is en veelbelovend ... maar nog steeds (veel?) minder mainstream dan React. Vervolgens wordt in de documentatie om te starten met een React App verwezen naar Gatsby(JS). Wat mij daar opvalt, is dat daar GraphQL als standaard integratie voor het laden van data wordt gepromoot! Het lijkt mij een prima basis voor onze eerste trial πŸ˜ƒ

De technische stack is dan:

marcvanandel commented 1 year ago

OK. Account aangemaakt op Gatsby Cloud (lijkt verplicht) en daarmee de wizard voor een 'default Gatsby app' doorlopen. Resultaat staat in een aparte repo: marcvanandel/demonstrator-koopovereenkomst-solid-app

marcvanandel commented 1 year ago

Om gebruik te maken van IRMA is wel / toch een IRMA server noodzakelijk. Dit is de IRMA server die gekoppeld is en kennis heeft van de Koopovereenkomst Solid App en de brug vormt met de IRMA App op de telefoon van de gebruiker.

Vanuit de GIDS Openstandaarden PoC lijkt het wel mogelijk om hun IRMA server te gebruiken (met lokale env settings): OpenSNS-IRMA-Docker (Go lang versie)

Worklog:

git clone https://github.com/GIDSOpenStandaarden/OpenSNS-IRMA-Docker.git

cp .env.dist .env

[edit .env as described in the documentation]

mv ./configuration/public_key.pem ./configuration/jwt_public.pem
mv ./configuration/private_key.pem ./configuration/jwt_private.pem

echo ADMIN_EMAIL=marc.vanandel@kadaster.nl >> .env

docker-compose build && docker-compose up

IRMA Server is up and running succesfully at http://localhost:8081!

NickvApeldoorn commented 1 year ago

In de demonstrator wordt gebruikt gemaakt van een basale versie van de gedataficeerde koopovereenkomst zoals ontwikkeld binnen Zorgeloos Vastgoed. De gedataficieerde koopovereenkomst kan je vinden via: https://github.com/bp4mc2/bp4mc2-zvg/blob/master/informatiemodel/voorbeeld/DigitaleKoopovereenkomstDemo.html - optie β€˜raw’ (dan krijg je de ruwe data), deze opslaan en dit bestand openen in de browser. Dit is de gedataficeerde koopovereenkomst.

Voor de demonstrator gebruiken wij de volgende gegevens:

NickvApeldoorn commented 1 year ago

Willen wij het ondertekenen van de koopovereenkomst (na invullen van bovenstaande) ook nog meenemen? Zo ja, dan moeten daar de volgende zaken worden ingevuld, zowel voor verkoper als koper:

marcvanandel commented 1 year ago

Goeie toevoeging, Nick!

marcvanandel commented 1 year ago

Ruben Verborgh heeft een React Solid components / examples repo!

Hopelijk kunnen we hier vanaf kijken hoe de build zou moeten werken ... (want dat blijft toch een beetje mistig 😏 )

(ohw ... archived ... 😬 Maybe 'cause there's a:)

OK. Browing around I get to this summary. Ruben has developed LDflex and React components. The React components were used in a solid-react-components lib of Ruben (now archived). This then migrated towards Inrupt/solid-react-components (archived as well) ... which is followed up by a Solid React SDK (also archived) ... and superceeded by the new Solid React SDK by Inrupt! But the latest is without LDflex.

So now we've to set up a fresh React webapp based on the (newest) Solid React SDK, add LDflex for Solid Query to it and make the former examples work again. Then we have a base application to sustain the development towards a Koopovereenkomst Solid App ...

marcvanandel commented 1 year ago

Following the inrupt/solid-demo-app logging in with Inrupt POD does not work ... but with solidcommunity.net works! πŸŽ‰

This might be a proper base to continue work on ... ? (I'm so tired of all dependency hell and not working set ups!! 😞 )

marcvanandel commented 1 year ago

Yes! Made some progress with v3 in #6 πŸŽ‰

marcvanandel commented 1 year ago

And published this version on GitHub Pages: https://marcvanandel.github.io/solid-quest/

marcvanandel commented 1 year ago

Tip van Digita rondom het starten van een Linked Data component / gebruiken van LD componenten: https://www.digita.ai/news/introducing-semcom-an-easy-way-for-developers-to-load-web-components-for-different-and-unknown-kinds-of-data

marcvanandel commented 1 year ago

In gesprek met GIDS Open Standaarden:

Vertrouwen is het primaire asset dat verhandeld wordt ... niet het document van de koopovereenkomst.

  1. IRMA voor identiteit vastleggen.
  2. Verifiable credentials uitwisselen en valideren (sequence of VCs -> ledger of VCs)
  3. 'Ergens opslaan' ... wat niet per se een POD hoeft te zijn. Sovrin oid zou hier ook prima (beter?) passen?

Representations of verifiable credentials (VCs).

Wat doet Solid hier? Het is vooral LinkedData. Solid is vooral voor het opslaan van documenten.

Verified triple?

NUTS zegt vooral iets over vertrouwen ... niet over data uitwisseling.

Trust netwerken en de rol van wallets.

Solid vervult vooral een rol in privacy concern. Wallets lijken beter te passen bij het bewaren van de sequence van VCs.

Je Funda data staat in je POD. Onderhandeling wordt beter ondersteund met cryptografische infrastructuur, een trust infrastructuur


Mijn comments:

Wallet = offline data, alleen online ten tijde van uitwisseling POD = online data, altijd online met duidelijke autorisatie Digitale identiteit = set van verifiable credentials die typisch in een wallet bewaard worden ... maar waarvan delen ook gedeeld kunnen / dienen te worden met andere partijen ... via een POD?

kad-michij commented 1 year ago

Janneke's aantekeningen:

Links: https://nuts.nl/ https://sovrin.org/ https://www.kik-v.nl/

marcvanandel commented 1 year ago

Demonstrator werkt ... en is klaar genoeg 😁