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
- Live
- s-z.makershub.be
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
Aanmelding
Ouder, school of vrijwilliger vult een publiek formulier in, zonder account.
- 2
Goedkeuring
De dossierbeheerder van die provincie ziet de aanvraag binnenkomen, vult aan en koppelt de school.
- 3
Beste matches
Vrijwilligers gerangschikt op vakken, afstand, vervoer en beschikbaarheid, met een score.
- 4
Match en opvolging
Eén klik maakt de match; leerling en vrijwilliger staan daarna als actief op het dashboard.
- Klas
- 3e middelbaar
- Richting
- Latijn-wiskunde
- Provincie
- Oost-Vlaanderen
- Status
- Goedgekeurd
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.
- Typecheckcontract eerst, dan elk pakket
- LintESLint, controllervorm, dode code
- Unitvitest met coverage-vloer
- Contractselke route bediend, geen route ernaast
- Auditgeen hoge kwetsbaarheid in prod-dependencies
- 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.
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.