Het probleem
Een tankstation draait 24/7. Het rooster is daarmee het belangrijkste document van de operatie — als het niet klopt, staat de pomp leeg of staat er één te veel. De manager bouwde elke maand het rooster in Excel, mailde het rond, en daarna begon het echte werk: medewerkers gaven ruilverzoeken door via WhatsApp, de manager paste het Excel-bestand handmatig aan, en mailde een nieuwe versie. Halverwege de maand circuleerden er typisch vier versies tegelijk. De vraag "welke versie geldt?" werd vaker gesteld dan ik wil opschrijven.
Daarbovenop: geen mobiele weergave (iedereen op een laptop met een file met 30 kolommen), geen logging (wie heeft wat goedgekeurd?), en als de manager op vakantie was viel alles stil.
VOOR
- 4 Excel-versies per maand
- Ruilverzoeken via WhatsApp
- Geen mobiel
- Geen audit trail
- Manager-afhankelijk
NA
- Eén bron van waarheid
- Ruilen in-app, met goedkeuring
- Mobiel-eerst
- Volledige audit log
- Automatische e-mail reminders
De oplossing
Een webapplicatie die het Excel-bestand letterlijk vervangt. Niet "meer features" — minder. De manager bouwt het rooster in een kalender-grid, publiceert het, en medewerkers zien direct hun diensten op hun telefoon. Beschikbaarheid en vrije dagen worden in-app aangevraagd. Diensten ruilen werkt met een tweezijdige goedkeuring (collega akkoord → manager akkoord → rooster bijgewerkt) — geen WhatsApp meer.
Wat er onder de motorkap zit
- Frontend React 18 + Vite + TailwindCSS + Zustand. Mobile-first.
- Backend Node.js 20 + Express + Prisma ORM
- Database PostgreSQL 16, met dagelijkse off-site backups
- Auth JWT — 15-min access token + 7-daags httpOnly refresh-cookie, met token-rotatie
- Notificaties In-app belletje + e-mail (cron-job 18:00 voor dienst-reminders, 09:00 voor manager-reminders)
- Deployment Docker Compose + nginx op Hetzner (~€10/maand)
Wat het opleverde
De maandelijkse rooster-cyclus is van een week-met-mailtjes naar een middag-in-de-app gegaan. Versie-conflicten: nul. Ruilverzoeken die "zoek raken" in WhatsApp: nul. Iedere medewerker heeft op zijn telefoon altijd het actuele rooster, met een notificatie de avond voor zijn dienst.
Belangrijkste minder-zichtbare winst: de manager hoeft niet meer in vakantie bereikbaar te zijn voor "welke versie geldt nu?". Het systeem is de bron van waarheid.