Alle werk
School & Ziekzijn

Case · School & Ziekzijn vzw

Elk ziek kind een bijlesgever, zonder een spreadsheet ertussen.

School & Ziekzijn koppelt kinderen die door ziekte niet (volledig) naar school kunnen aan vrijwillige bijlesgevers. Ik bouwde hun dossierplatform: van de publieke aanmeldformulieren tot het voorstel van de beste match, en de pipeline die het veilig in productie zet.

Rol
Full-stack, solo
Periode
Maart 2026 – nu
Gebruikers
Beheerders, dossierbeheerders, marketeer
4provincies, elk met eigen dossierbeheerders en afgeschermde toegang
3publieke formulieren: ouders, scholen en kandidaat-vrijwilligers
28Playwright-scenario's tegen de productie-images, bij elke push
90 %coverage-vloer in de backend, afgedwongen in CI

Het probleem

De leerlingen en vrijwilligers stonden in spreadsheets, en een match maken betekende zelf zoeken wie in de buurt woont en het juiste vak geeft. Tegelijk gaat het om gezondheidsgegevens van minderjarigen en rijksregisternummers van vrijwilligers, en daar mag je niet slordig mee zijn.

Wat ik bouwde

Eén platform voor de hele weg van aanmelding tot opvolging. De bestaande leerlingen en vrijwilligers kwamen mee via een import uit hun spreadsheets. Een dossier gaat als PDF naar buiten, en de marketeer verstuurt nieuwsbrieven zonder ooit een dossier te zien.

Hoe een kind een bijlesgever krijgt

  1. 1

    Aanmelding

    Ouder, school of vrijwilliger vult een publiek formulier in, zonder account.

  2. 2

    Goedkeuring

    De dossierbeheerder van die provincie ziet de aanvraag binnenkomen, vult aan en koppelt de school.

  3. 3

    Beste matches

    Vrijwilligers gerangschikt op vakken, afstand, vervoer en beschikbaarheid, met een score.

  4. 4

    Match en opvolging

    Eén klik maakt de match; leerling en vrijwilliger staan daarna als actief op het dashboard.

Emma PeetersLeerlingvoorbeelddata
LeerlingOnderwijs & zorgSchoolVrijwilligers
Klas
3e middelbaar
Richting
Latijn-wiskunde
Provincie
Oost-Vlaanderen
Status
Goedgekeurd
Gewenste vakken
WiskundeFysicaFrans
Beste matches11 gevonden
Lotte De Smet82 %
Wiskunde, Fysica · auto · 6 km in vogelvlucht
Pieter Claes63 %
Wiskunde · fiets · 15 km in vogelvlucht
Sara Janssens52 %
Frans · openbaar vervoer · afstand onbekend
Match aanmaken

Privacy zat er vanaf de eerste feature in

Elke medewerker krijgt een persoonlijke uitnodiging en stelt bij de eerste login tweestapsverificatie in, dus gedeelde accounts en standaardwachtwoorden bestaan er niet. De server bepaalt wie wat ziet, niet het scherm. En naast de code ligt het GDPR-dossier voor de vzw: verwerkingsregister, DPIA, privacyverklaring, bewaartermijnen, verwerkersovereenkomst en datalekprocedure.

Beheerder
Alle provincies, leden uitnodigen, dossiers definitief verwijderen
Dossierbeheerder
Leerlingen, vrijwilligers en scholen van de eigen provincie
Marketeer
Alleen nieuwsbriefcampagnes, zonder toegang tot dossiers

Niets haalt productie zonder groen

Eén contract (ts-rest + zod) beschrijft de hele API; backend en frontend worden ertegen gecontroleerd. CI draait dezelfde poorten als mijn werkbank.

  1. Typecheckcontract eerst, dan elk pakket
  2. LintESLint, controllervorm, dode code
  3. Unitvitest met coverage-vloer
  4. Contractselke route bediend, geen route ernaast
  5. Auditgeen hoge kwetsbaarheid in prod-dependencies
  6. E2EPlaywright tegen de echte images

Is alles groen, dan worden de images getagd met de commit-sha en uitgerold naar AWS Lightsail achter Cloudflare. Terugdraaien is die vorige sha opnieuw uitrollen.

NestJS · Prisma · Postgres · Redis + BullMQ · React · Vite · Tailwind · shadcn · ts-rest · zod · Docker · GitHub Actions · GHCR · AWS Lightsail · Cloudflare

Je hebt een ganse weg afgelegd om vertrouwd te raken met de werking en hebt direct opgemerkt dat onze administratie eenvoudiger kon. Voor ons als vrijwilliger belangrijk zodat er voldoende tijd is ons te focussen op onze core business. Dus ja, we kijken ernaar uit om de administratie efficiënter en minder tijdrovend aan te pakken.
HHildeSchool & Ziekzijn vzw

Ook zoiets nodig?

Een intern platform met gevoelige data, een proces dat nog in spreadsheets zit? Dertig minuten is genoeg om te zien of het past.

Schermen op deze pagina tonen voorbeelddata.