Nog niet online: de demo draait lokaal
Werkers en klanten met werk bij elkaar brengen, en opleiden in het werk. Wat je kunt, staat op je profiel, bevestigd door wie het zelf zelfstandig kan.
De Maze-Guild brengt mensen die werk doen samen met mensen die werk laten doen, en leidt ze op in dat werk. Een klant meldt werk; de Guild stelt ervaren werkers in de buurt voor die het kunnen, waar het kan samen met een leerling; de klant kiest, de werker accepteert. Na het werk beoordeelt de klant, en de ervaren werker bevestigt wat de leerling deed. Wat je kunt, staat op je profiel, bevestigd door wie het zelf zelfstandig kan. Dat profiel vervangt het cv.
Er zijn twee omgevingen. In de demo kies je een fictieve persoon; alles is verzonnen. In de echte omgeving log je in met een link in je mail; beheerders en organisaties gebruiken daar ook een code uit een app (de tweede factor).
Te doenHet eerste tabblad in elke rol: wat er nu van jou gevraagd wordt. Een klant ziet voorstellen om te kiezen, opleveringen om te beoordelen, een rooster of tijdvak om te bevestigen en werk dat binnenkort eindigt. Een werker ziet aanbod, werk om af te melden, een leerling om te bevestigen, een voorstel om te verlengen en een erkenning die verloopt. De beheerder ziet toelatingen, geschillen, open gaten, verlopende erkenningen en mogelijke dubbelen. Met de pijl ga je naar het werk.
MeldingenElke melding in de tool. Met "Meldingen ook per mail" (bij Mijn gegevens) krijg je ze ook in je mail.
Mijn gegevensJe profiel; alles wat over je is vastgelegd, ook wie je profiel bekeek en wanneer; je gegevens verwijderen. Werkers en leerlingen geven hier hun leeftijd als groep (16 of 17, of 18 of ouder): alleen nodig omdat sommig werk wettelijk niet door iemand onder de 18 mag; klanten zien dit nooit. Hier meld je ook afwezigheid (zonder reden), stel je de tweede factor in, en maakt een werker een uitnodigingslink voor een leerling of collega (je ziet alleen of hij gebruikt is; er is geen beloning).
/handleidingDeze handleiding, op het adres van de Guild zelf. De knop EN of NL wisselt de taal.
/controleer.htmlEen openbare pagina: wie een export van aangetoond werk kreeg, vult de controlecode in en kiest het bestand. De pagina zegt of de export ongewijzigd is. Het bestand blijft in de browser.
Mijn werkJe werk met de status. Bij een werk: Zoek werkers (voorstellen, of een gat met de reden), de voorstellen met profiel en afstand, kiezen, de opleveringen beoordelen en de uren bevestigen. Daaronder: Berichten met de werker en leerling; de Werkafspraak als pdf, die klant en werker in de tool ondertekenen; Tijdvakken die de werker aanbiedt (kies er één en zet hem met de .ics in je agenda); bij doorlopend werk het Rooster (welke dagdelen), Verlengen, Werk afsluiten en Vervanging melden als de werker afwezig is.
Werk meldenSoort werk, postcode of locatie, omschrijving, foto's, eenmalig of doorlopend (dagdelen per week en looptijd), periode, en of een leerling welkom is.
Overzicht organisatieAl het werk van de organisatie per locatie; locaties toevoegen en gebruikers uitnodigen.
OverzichtPer maand: gemeld en gekoppeld werk, bevestigde uren met tevredenheid, bevestigde niveaus, en per locatie wie wanneer komt (het rooster). Met Uren exporteren (csv) haal je de bevestigde uren op voor je salaris- of factuuradministratie. De Guild rekent geen loon.
KoppelingenHet KvK-nummer van je organisatie; API-sleutels (alleen lezen, één keer getoond) en webhooks naar je eigen systemen. Zie de laag voor de verbinder.
KringSaldo en boekingen in zaadjes, het fiscale jaaroverzicht, en borg staan voor een opleiding.
AanbodVoorstellen aan jou, met waarom (vaardigheden, erkenning, afstand, dagdelen). Als werker kies je hoe je beloond wilt worden: ruil in zaadjes, vrijwillig, of in euro's.
OpdrachtenJe werk met de gemelde en bevestigde uren en de laatste oplevering. Bij een opdracht: hulp vragen als een verwachting faalt, werk afmelden met uren en foto's, het niveau van je leerling bevestigen (met een toelichting die alleen de leerling ziet), lessen, cases en failures uit het vak, een case vastleggen, en dezelfde blokken als de klant: berichten, werkafspraak, tijdvakken (aanbieden), rooster en een voorstel om te verlengen.
OproepenVoor een werker op afroep: hulpvragen van anderen, aannemen en live meekijken.
Cases en LessenZoeken (ook op taal), vastleggen met video, en bij elk stuk Vragen: vraag en antwoord tussen werkers en leerlingen; de maker krijgt een melding. Klanten zien niets hiervan.
VoortgangVoor een leerling: niveaus per vaardigheid met de bevestigingen en de toelichtingen, en werk dat nu past.
TalentWerk dat je zelfstandig kunt, leerroutes, werk dat een erkenning vraagt, en opleidingen.
OverzichtDezelfde cijfers als een organisatie, over alles, plus de tekortanalyse: open gaten per vaardigheid en het aantal werkers en leerlingen per niveau en werksoort. Tellingen, geen voorspelling.
Gaten, Kringrapport, Personen, Exploitant, Catalogus, Privacy, GrootboekGaten afhandelen; de kring sturen; toelaten, deactiveren en erkenningen vastleggen; vergunningen; de catalogus (ook het beroep per werktype en of werk 'niet onder 18' is); de drie privacydocumenten; het grootboek met kettingcontrole.
ControlesEen identiteitscontrole vastleggen (dienst, datum, uitkomst: nooit een beeld of documentnummer); een aanmelding weigeren met een reden die de persoon ziet; de dagtaak nu draaien; mogelijke dubbelen samenvoegen; lopend werk zonder geldige erkenning.
KoppelingenAPI-sleutels en webhooks voor alles.
Eén doorlopende relatie tussen werker, klant, werk en leren. De toets voor elke functie: versterkt ze die relatie, en blijft ze binnen de wet?
Waar het vandaan komt. De Guild is een afsplitsing van de Maze-Bank (het idee: de waarde blijft in de kring van mensen, korte lussen, coöperatie op menselijke schaal) en van SWARP Support (werkende onderdelen: account, profiel, beroepenlijst, leren uit cases). Werk, vakmanschap en leren zijn de echte float van een gemeenschap; bemiddelaars nemen daar nu veel van af.
Leren uit falen. Naar Roger Schank: je leert als een verwachting faalt, en je onthoudt de les als verhaal. Daarom bestaan de cases (wat verwachtte je, wat gebeurde, hoe loste je het op, wat doe je voortaan), de ladder bij een hulpvraag, en de failures uit het vak.
Mensen beslissen. De Guild stelt voor, telt en meldt. Kiezen, accepteren, toelaten, bevestigen en een geschil beslissen doen mensen, en elk besluit staat in een hash-geketend grootboek dat volgens de AVG redigeerbaar is.
Bewust buiten de Guild, en waarom: persoonlijkheidstests en automatische cv-selectie (beoordelen op eigenschappen; hoog risico onder de AI-verordening, bijlage III punt 4); emotieherkenning (verboden op het werk, AI-verordening art. 5 lid 1 f); biometrie zoals gezichtsvergelijking (bijzondere persoonsgegevens); leeftijd als criterium bij koppelen (WGBL art. 3); profielen van andere sites oogsten; zelf loon uitbetalen (dat doet de exploitant buiten de Guild).
Leeftijd. De enige plek waar leeftijd telt, is een wettelijk verbod: werk dat jongeren onder de 18 niet mogen doen. Daarvoor kent de Guild twee standen, 16–17 en 18 of ouder, in de privélaag; geen geboortedatum. Zo houdt de Guild zich aan de regels voor jeugdige werknemers zonder leeftijd mee te laten wegen.
Elke weigering noemt de regel. Dit zijn ze allemaal, letterlijk uit de code:
Een zelfstandige Node-applicatie (Node 20, één afhankelijkheid: pg). Eén server is één omgeving (GUILD_OMGEVING=demo|echt) met een eigen Postgres-database.
src/server.mjs — HTTP, sessies, de tweede factor, API-sleutels, routes; elke route draagt een sleutel uit src/rechten.mjs.src/guild.mjs — de kern: melden, koppelen (met afwezigheid en 'niet onder 18'), kiezen, opleveren, niveaus, lessen, cases, AVG, bewaartermijnen, de demo.src/dienst.mjs — de dienstlaag van v8: berichten, vragen, controlecode, overzichten, urenexport, acties, dagtaak, werkafspraak en ondertekening, controles, KvK, tijdvakken, rooster, afwezigheid, verlengen, uitnodigingslinks, dubbelen, API-sleutels, tekortanalyse.src/grootboek.mjs (hash-keten, per veld een verbintenis, redigeerbaar), src/kring.mjs (de kring), src/hulp.mjs (de ladder en live beeld), src/video.mjs, src/support.mjs (Swarp Support), src/mail.mjs, src/totp.mjs, src/oidc.mjs, src/webhook.mjs, src/pdf.mjs (eigen pdf-schrijver).public/ — de pagina (NL/EN) en controleer.html; docs/ — plannen (elk gehasht vóór de code), toetsrapport, specificatie en deze handleiding (scripts/handleiding.mjs).scripts/backup.mjs en scripts/terugzet-toets.mjs — versleutelde back-up (AES-256-GCM, 35 dagen) en een terugzettoets die de grootboekketen controleert.Instellingen: DATABASE_URL, GUILD_OMGEVING, GUILD_SLEUTEL (verplicht in de echte omgeving), GUILD_URL, BREVO_API_KEY en MAIL_FROM, OPENAI_API_KEY, SUPPORT_URL en SUPPORT_GEHEIM, GUILD_OIDC_ISSUER/_CLIENT_ID/_SECRET, KVK_API_KEY, GUILD_BACKUP_SLEUTEL, GUILD_ACHTER_PROXY, GUILD_DAGTAAK=uit (alleen voor toetsen).
Hosting: in de EU (Render, regio Frankfurt), achter https (de server zet dan HSTS). Gegevens in rust versleutelt de database van de host; back-ups versleutelt de Guild zelf. Een beveiligingstest door een derde hoort vóór de eerste echte gebruikers.
Toetsen: node toets/toets.mjs draait alle acceptatietoetsen tegen twee lege testdatabases, met een nagebootste Swarp Support, een nagebootste identiteitsdienst, een webhookontvanger en een nagebootste KvK. Toets DR controleert dat deze handleiding elke route en elke regel noemt.
Inloggen voor systemen. Een organisatie of de beheerder maakt bij Koppelingen een API-sleutel. Gebruik: Authorization: Bearer gld_…. Een sleutel mag alleen lezen, en alleen: overzicht, export.uren, werk.mijn, organisatie.overzicht, acties. GET /api/beschrijving geeft alle routes met hun rechten als JSON.
Webhooks. Gebeurtenissen: werk.gemeld, voorstel.gekozen, werk.gekoppeld, oplevering.gemeld, oplevering.beoordeeld, niveau.bevestigd. De inhoud is { soort, werk, …ids, op }, zonder namen. Controleer de kop x-guild-handtekening:
const goed = kop === "sha256=" + crypto.createHmac("sha256", geheim).update(ruweBody).digest("hex");
Een ontvanger die geen 2xx geeft, krijgt de gebeurtenis nog twee keer, met toenemende pauze.
Inloggen via de organisatie (SSO). OpenID Connect met PKCE; terugkeeradres <GUILD_URL>/api/oidc/terug; scopes openid email profile; alleen RS256. SAML wordt niet ondersteund.
Swarp Support. De Guild leest beroepen en failures met het gedeelde geheim (x-swarp-secret) via /api/beroepen/namens en /api/failures/namens.
Ondertekenen bij een dienst. De Guild tekent zelf met een gewone elektronische handtekening (hash van de pdf). Een gekwalificeerde handtekening vraagt een contract met een dienst; het veld ondertekening.dienst is daarvoor gereserveerd.
Controlecode. GET /api/controleer?code=GLD-… geeft naam, datum en hash. De hash is sha256 van de export zonder het veld controle, als JSON zonder spaties in de volgorde van het bestand.
Methode, pad, rechtensleutel, wie mag, en wat het doet. Bovenop deze rechten gelden objectrechten (een klant ziet alleen eigen werk, een werker alleen werk waaraan hij gekoppeld is).
inlog.vraag · anonieminlog.bevestig · anoniemaanmelden · anoniemdemo.personen · anoniemdemo.als · anoniem, klant, organisatie, werker, leerling, beheerder, wachtdemo.opnieuw · beheerderik · klant, organisatie, werker, leerling, beheerder, wachtuit · klant, organisatie, werker, leerling, beheerder, wachtrol · klant, organisatie, werker, leerling, beheerder, wachtcatalogus · klant, organisatie, werker, leerling, beheerder, wachtcatalogus · klant, organisatie, werker, leerling, beheerder, wachtmijn.profiel · klant, organisatie, werker, leerling, beheerder, wachtmijn.profiel.wijzig · klant, organisatie, werker, leerling, beheerder, wachtmijn.inzage · klant, organisatie, werker, leerling, beheerder, wachtmijn.verwijder · klant, organisatie, werker, leerling, beheerder, wachtmijn.export · werker, leerlingprofiel.bekijk · klant, organisatie, werker, leerling, beheerderwerk.meld · klant, organisatiewerk.mijn · klant, organisatiewerk.zie · klant, organisatie, werker, leerling, beheerderwerk.koppel · klant, organisatiewerk.voorstellen · klant, organisatievoorstel.kies · klant, organisatieoplevering.beoordeel · klant, organisatieorganisatie.overzicht · organisatiewerker.aanbod · werker, leerlingvoorstel.akkoord · werker, leerlingwerker.opdrachten · werker, leerlingopdracht.zie · werker, leerlingopdracht.afmelden · werkeropdracht.bevestig · werkerles.maak · werkerles.lijst · werker, leerlingcase.maak · werker, leerlingvideo.upload · werker, leerlingvideo.zie · werker, leerling, beheerdervak.failures · werker, leerling, beheerdercase.zoek · werker, leerlingleerling.voortgang · werker, leerlingtalent · werker, leerlingbeheer.catalogus · beheerderbeheer.personen · beheerderbeheer.toelaten · beheerderbeheer.deactiveer · beheerderbeheer.erkenning · beheerderbeheer.gaten · beheerderbeheer.gat.afhandelen · beheerderbeheer.privacy · beheerderbeheer.privacy · beheerderbeheer.grootboek · beheerderbeheer.keten · beheerderbeheer.anker · beheerderbeheer.anker · beheerdermelding.lijst · klant, organisatie, werker, leerling, beheerder, wachtmelding.gelezen · klant, organisatie, werker, leerling, beheerder, wachtorganisatie.locatie · organisatieorganisatie.lid · organisatiekring.mijn · klant, organisatie, werker, leerling, beheerderkring.rapport · beheerderkring.cyclus · beheerderkring.instellingen · beheerderopleiding.lijst · klant, organisatie, werker, leerling, beheerderopleiding.maak · beheerderopleiding.borg · klant, organisatieopleiding.start · beheerderspraak · werker, leerlingcase.concept · werker, leerlingles.concept · werkeraanwezig · werkerhulp.vraag · werker, leerlinghulp.helpt · werker, leerlingoplevering.betaal · klant, organisatie, beheerderhulp.stand · werker, leerlinghulp.helpt · werker, leerlinghulp.oproepen · werkerhulp.aanneem · werkerhulp.sein · werker, leerlinghulp.sein · werker, leerlinghulp.toestemming · werker, leerlinghulp.momentopname · werker, leerlinghulp.oplossing · werkerhulp.momentopname · werker, leerlingbeheer.geschil · beheerderuitnodiging · klant, organisatie, werker, leerling, beheerder, wachtuitnodiging · klant, organisatie, werker, leerling, beheerder, wachthulp.bevestig · werkerleerling.uren · werker, leerlingbeheer.leerling.uren · beheerderbeheer.erkenningen · beheerderbeheer.erkenning.intrekken · beheerderbeheer.gaten.export · beheerderbeheer.exploitant · beheerderbeheer.exploitant · beheerderbeheer.rand · beheerderacties · klant, organisatie, werker, leerling, beheerderoverzicht · organisatie, beheerderexport.uren · organisatie, beheerderbericht.lijst · klant, organisatie, werker, leerling, beheerderbericht.stuur · klant, organisatie, werker, leerlingvraag.lijst · werker, leerling, beheerdervraag.stel · werker, leerling, beheerdercontroleer · anoniem, klant, organisatie, werker, leerling, beheerder, wachtbeschrijving · anoniem, klant, organisatie, werker, leerling, beheerder, wachttfa.start · klant, organisatie, werker, leerling, beheerdertfa.bevestig · klant, organisatie, werker, leerling, beheerdertfa.code · klant, organisatie, werker, leerling, beheerderoidc · anoniem, klant, organisatie, werker, leerling, beheerder, wachtoidc · anoniem, klant, organisatie, werker, leerling, beheerder, wachtoidc · anoniem, klant, organisatie, werker, leerling, beheerder, wachtsleutel · organisatie, beheerdersleutel · organisatie, beheerdersleutel · organisatie, beheerderwebhook · organisatie, beheerderwebhook · organisatie, beheerderwebhook · organisatie, beheerderafspraak.zie · klant, organisatie, werker, leerling, beheerderafspraak.zie · klant, organisatie, werker, leerling, beheerderafspraak.teken · klant, organisatie, werkerbeheer.controle · beheerderbeheer.controle · beheerderorganisatie.kvk · organisatietijdvak.lijst · klant, organisatie, werker, leerling, beheerdertijdvak.bied · klant, organisatie, werkertijdvak.bied · klant, organisatie, werkertijdvak.lijst · klant, organisatie, werker, leerling, beheerderrooster · klant, organisatie, werkerrooster · klant, organisatie, werkerafwezig · werker, leerlingafwezig · werker, leerlingafwezig · werker, leerlingwerk.vervanging · klant, organisatiewerk.verlengen · klant, organisatiewerk.verlengen · klant, organisatieopdracht.verlengen · werkeruitnodiging.link · werkeruitnodiging.link · werkermijn.toelating · klant, organisatie, werker, leerling, beheerder, wachtbeheer.toelaten · beheerderbeheer.dubbelen · beheerderbeheer.dubbelen · beheerderbeheer.dagtaak · beheerderbeheer.erkenningen · beheerderbeheer.gaten · beheerder