Een monteur staat in een kelder in Alphen aan den Rijn. Geen 4G, geen wifi, geen bereik. Zijn volgende klus is een cv-storing in een VvE-flat — drie keer geen verbinding achter elkaar. Zijn werkbon moet af.
"Offline werkt ook" staat in elke werkbon-app-brochure. De praktijk: de helft van de apps hangt bij de eerste verloren verbinding. Wij hebben dat fundamenteel anders aangepakt.
Offline-first, niet offline-ondersteunend
Het verschil is groot. "Offline-ondersteunend" betekent dat de app online werkt en offline een beetje. "Offline-first" betekent dat de app altijd offline werkt, en online synct op de achtergrond.
Dat laatste vereist compleet andere architectuur:
- Lokale database op het device. Alle werkbonnen, klanten en artikelen staan op de telefoon, zelfs zonder bereik.
- Elke wijziging wordt lokaal opgeslagen. Ook als de server onbereikbaar is.
- Sync is asynchroon. Zodra er bereik is, stuurt de app queued wijzigingen naar onze backend — op de achtergrond, zonder dat de monteur wacht.
- Conflict-resolutie is slim. Als twee monteurs dezelfde klus bewerken, lossen we dat op server-side met timestamps en een duidelijke laatste-wint-regel.
Wat er in een kelder gebeurt
Concreet: de monteur opent de app. Geen bereik. Hij ziet gewoon zijn planning van vandaag, zijn klantgegevens, zijn vorige werkbonnen. Hij vult de werkbon in. Maakt foto's. Laat de klant tekenen.
Alles wordt lokaal opgeslagen. De app toont bovenin een klein icoontje "2 items wachten op sync". Geen fout, geen paniek, geen bevriezing.
Stap buiten. Bereik. Sync gebeurt automatisch binnen 10 seconden. Het icoontje verdwijnt. De werkbon staat op kantoor. Geen actie van de monteur vereist.
Wat er mis kan gaan
We zijn er eerlijk over: offline werken is niet gratis. We betalen er technische complexiteit voor.
- App-downloads zijn groter, omdat we een volledige SQLite-database meenemen.
- Eerste login vereist bereik — we moeten immers klantgegevens en artikelen synchroniseren.
- Conflicten zijn zeldzaam, maar mogelijk. We loggen ze en laten de planner eventueel kiezen.
Dit zijn trade-offs die we bewust hebben gemaakt. Een monteur die vijf keer per dag in een kelder staat, accepteert graag een iets grotere app-download in ruil voor werkbonnen die gewoon werken.
Waarom het werkt
Omdat we ontworpen hebben voor de slechtste verbinding, niet de beste. Dat gaat iedereen merken — ook monteurs die wel gewoon 5G hebben. Want de app voelt altijd snel aan: geen laad-spinners, geen "probeer opnieuw"-dialogen.
"Ik merk niet eens meer of ik bereik heb. De app werkt gewoon, altijd."
— Sander, monteur bij Elektra Experts