Een tijdmachine voor DPP's

Stel je voor dat je een product in je hand houdt en de QR-code erop scant. In plaats van een PDF-bestand opent er een kleine app. Je ziet het product zoals het nu is: waaruit het bestaat, waar het vandaan komt, waar je op moet letten. Met een veegbeweging bladert u terug in de tijd - elke versie die ooit is uitgebracht, kunt u bekijken.

Dat kunt u nu zelf uitproberen: de demo⁠ toont een volledig productpaspoort met voorbeeldgegevens.

Dit is Transpareo Time Machine, onze open-source consumentenapp voor elk digitaal productpaspoort. De code staat onder GPL v3 op GitHub⁠.

We bouwen deze app omdat de EU-verordening inzake het digitale productpaspoort is geschreven voor de consument - voor de persoon die het product in handen heeft. De meeste aanbieders maken er een compliance-formulier van dat niemand twee keer scant. Wij maken er een app van die de consument ook daadwerkelijk opent.

Wat de app doet

Vier contactmomenten vanuit het perspectief van de persoon die het product in de hand houdt. Geen inloggen, geen app installeren.

1

Scannen

Scan de QR-code met de camera van je smartphone. De app wordt in de browser geopend.

2

Bekijk het laatste nieuws

Het product in het hier en nu - onderdelen, materialen, herkomst, onderhoud, recycling.

3

Door de geschiedenis bladeren

Met één veegbeweging blader je terug in de tijd. Elke eerdere versie, met datum en reden van de wijziging.

4

Delen

Elke versie heeft een eigen link. Iemand deelt een bepaalde versie met vrienden of instanties.

Waarom eigenlijk?

De EU-verordening inzake het digitale productpaspoort is de grootste stap in de richting van producttransparantie sinds decennia. Als men de onderliggende teksten aandachtig leest, blijkt dat deze expliciet voor de consumenten is geschreven. De overheden, de recyclers en de werkplaatsen spelen hierin mee, maar de primaire doelgroep is de persoon die het product in handen heeft.

Cijfermatig gezien is de situatie duidelijk. Een gemiddelde Europese particulier zal tegen het einde van dit decennium tientallen tot honderden productpaspoorten per jaar kunnen scannen. Uitgaande van 200 miljoen huishoudens zijn dat miljarden interacties met consumenten per jaar. De wereld van de overheden en recyclers is daarnaast numeriek gezien verwaarloosbaar klein.

Als de verordening de consument moet bereiken, dan moet de consumentensite goed zijn opgezet - snel, mooi, logisch. Anders schiet ze haar doel voorbij. We hebben besloten deze consumentensite open source te bouwen, zodat ze niet afhankelijk is van één enkele aanbieder.

Gecontroleerd in de browser, niet op onze server

Bovenaan elk productpaspoort verschijnt een keurmerk: Geverifieerd door Transpareo. Dit keurmerk geeft het resultaat weer van een controle die niet op onze server plaatsvindt, maar in de browser van de bezoeker - op basis van de geladen bytes en de openbare sleutels van de fabrikant.

Elke DPP-versie wordt door twee onafhankelijke partijen ondertekend: de fabrikant en Transpareo. Beide handtekeningen moeten verifieerbaar zijn, zodat het label groen wordt. Met ‘Bring Your Own Key’ (BYOK) beheert de fabrikant een eigen ondertekeningspunt - Transpareo bewaart de privésleutel nooit en voegt alleen de onafhankelijke tegenhandtekening toe. Zo ontstaat een handtekening van de uitgever die Transpareo zelf niet kan genereren. Een gecompromitteerde server kan het vinkje niet vervalsen, omdat de controle bij de bezoeker zelf plaatsvindt.

Wie het precies wil weten, klikt op het keurmerk. Daarachter ziet u de handtekeningketen, de hashes en de gekoppelde versiegeschiedenis. Wie alleen de informatie wil, negeert dit gewoon en leest verder in het productpaspoort.

Dezelfde controle is ook beschikbaar als zelfstandige pagina: op de DPP-verificatie voert u de manifest-URL van een willekeurig productpaspoort in en ziet u het volledige controleresultaat - zonder het paspoort zelf te openen.

We maken de code openbaar

Transpareo Time Machine valt onder de GPL v3 op GitHub⁠. Klonen, forken, zelf hosten - alles is toegestaan. Gepubliceerde aanpassingen moeten op hun beurt onder GPL v3 vallen, zodat elke verdere ontwikkeling ten goede komt aan de gemeenschap.

Drie manieren om de bundel te integreren:

  • Via een script-tag: een <script> en een <transpareo-time-machine src="…"> in de pagina plaatsen, klaar - geen build-stap nodig.
  • Via npm: npm install transpareo-time-machine in je eigen app.
  • Zelf hosten: bundel bouwen, eigen infrastructuur, geen afhankelijkheden van derden tijdens de uitvoering.

Wie alleen de handtekeningcontrole nodig heeft zonder het volledige productoverzicht, importeert het zusterelement <dpp-verifier> - ideaal voor audittools. Live te zien bij de DPP-verificatie.

Wie de app op een zinvolle manier gebruikt

De app is in de eerste plaats ontwikkeld voor consumenten. Maar hij is geschikt voor iedereen die productgegevens zelfstandig wil bekijken of verifiëren.

  • Eindgebruikers scannen, bekijken, bladeren en delen. Geen inloggen, geen trackers.
  • Markttoezichthouders en overheidsinstanties bekijken het productpaspoort in software waarvan de broncode openbaar kan worden gecontroleerd.
  • Werkplaatsen en recyclers zien de materiaalsamenstelling en demontage-instructies direct op het product.
  • Merken en fork-beheerders passen de bundel aan hun eigen merk aan - CSS-tokens, eigen componenten, zelfhosting.

Wat gebeurt er als Transpareo er niet meer is?

De EU eist dat een geregistreerd productpaspoort ten minste tien jaar beschikbaar blijft - ook na een faillissement of liquidatie van de fabrikant. Een SaaS-aanbieder blijft zelden zo lang bestaan. Daarom bouwen we het platform vanaf het begin zo op dat de productpaspoorten onafhankelijk van ons bruikbaar blijven:

  • Elke ondertekende DPP-versie wordt opgeslagen in een openbaar leesbare opslagplaats. De bytes plus de gepubliceerde openbare sleutels volstaan voor een latere verificatie.
  • Zodra de productpassen bij het EU-register zijn geregistreerd, worden elke DPP-versie en het gebeurtenislogboek nog eens tien jaar lang gespiegeld in een tweede, alleen-lezen opslagplaats. Niemand - ook wij niet - kan deze gespiegelde kopieën achteraf wijzigen.
  • Na opzegging blijven de korte productpas-URL’s via een omleiding op het Transpareo-platform bereikbaar.
  • Transpareo Time Machine werkt ook ongewijzigd met gearchiveerde bestanden. De bundel roept ons tijdens de uitvoering niet terug; het heeft alleen de bytes en de sleutels nodig.

Als het Transpareo-platform morgen zou verdwijnen, zouden de DPP-versies en de open-source-renderer blijven bestaan.

Voor wie nieuwsgierig is naar technologie

Dit is wat er onder de motorkap gebeurt. Wie dit niet in detail hoeft te weten, kan dit gedeelte overslaan - de app werkt ook dan nog.

  • GS1 Digital Link (ISO/IEC 18975): De URL van het productpaspoort bevat de productidentificatie in een gestandaardiseerde vorm - resolverneutraal, uitwisselbaar tussen aanbieders.
  • JSON Canonicalization Scheme (RFC 8785): Een deterministische serialisatie. Zo blijft de hash reproduceerbaar, ongeacht de volgorde van de velden of witruimte - iedereen kan hem zelf narekenen.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Ed25519-handtekening over de gecanoniseerde vorm (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): openbare sleutels van de uitgevers bevinden zich onder een gestandaardiseerd pad - geen verzoek aan Transpareo nodig, elke verificateur vindt ze zelf.

Alles is gedocumenteerd in de README op GitHub⁠ - inclusief de frontend-architectuur (eigen React-kern, geen externe frameworks) en de bouwinstructies voor zelfhosting.

Bekijk de code op GitHub

De volledige broncode, alle releases en de discussie over de issue vindt u in de openbare repository.