Eén backend voor web- en mobiele apps: een praktisch plan
Leer hoe je één backend ontwerpt voor web- en mobiele apps met één datamodel, gedeelde regels en UI-keuzes die passen bij kantoor- en veldteams.

Waarom twee apps uit elkaar groeien
Twee apps kunnen met hetzelfde doel beginnen en toch snel anders gaan werken. Het kantoorteam heeft een duidelijke admin webapp nodig. Het veldteam heeft een snelle mobiele app nodig. Beide werken met dezelfde opdrachten, klanten, formulieren en statusupdates, maar elke app wordt gevormd door andere dagelijkse routines.
Daar begint de kloof. Kantoormedewerkers maken misschien werkorders aan en plannen ze in, terwijl veldmedewerkers die ter plaatse bijwerken. Als beide teams dezelfde records aanraken maar elke app er anders mee omgaat, ontstaan er snel problemen. Een opdracht die op het web als "toegewezen" staat, kan op mobiel als "klaar" worden gezien. Een opmerking die in de ene app verplicht is, kan in de andere optioneel zijn. Al snel vertelt het record geen eenduidig verhaal meer.
De belangrijkste oorzaak is gedupliceerde logica. Als bedrijfsregels in beide apps zijn ingebouwd, groeien kleine verschillen uit tot echte conflicten. Het ene scherm kan een technicus een taak laten sluiten zonder foto's. Een ander scherm blokkeert de facturatie totdat foto's zijn toegevoegd. Nu zegt de status dat het werk klaar is, maar de gegevens zijn onvolledig.
Ook namen verschuiven. Het ene team zegt "bezoek voltooid." Een ander zegt "klus klaar." Een manager zegt "gesloten." Die termen klinken in een gesprek genoegszins gelijk, maar in software worden het aparte stappen, filters en rapporten. De verwarring groeit in de loop van de tijd, vooral wanneer nieuwe teamleden het proces leren vanaf het scherm dat zij zien.
Zelfs kleine wijzigingen vergroten de kloof. Een nieuwe goedkeuringsstap, een verplichte handtekening of een extra klantenveld klinkt onbelangrijk. Maar als die wijziging op twee plekken opnieuw moet worden gebouwd, wordt één app meestal eerst bijgewerkt en de andere volgt later. Die vertraging zorgt voor extra werk, supportvragen en slechte data.
Daarom is een gedeelde backend belangrijk. Wanneer de admin webapp en de mobiele veldapp records delen maar niet dezelfde regels, splitst het systeem langzaam in tweeën.
Begin met één gedeelde workflow
Voordat je aan schermen denkt, beschrijf het werkelijke proces van begin tot eind. Begin op het moment dat een aanvraag wordt aangemaakt en eindig wanneer de opdracht wordt gesloten, goedgekeurd of gefactureerd. Dit geeft beide apps hetzelfde fundament.
Een veelgemaakte fout is de admin webapp en de mobiele veldapp als twee aparte producten te plannen. Dat creëert meestal twee versies van hetzelfde proces, twee betekenissen voor dezelfde status en extra handmatige correcties later. De workflow moet eerst komen.
Gebruik duidelijke, eenvoudige taal. Bijvoorbeeld: aanvraag aangemaakt, toegewezen, geaccepteerd, bezig, gepauzeerd, voltooid, beoordeeld. Kijk vervolgens naar elke stap en vraag wie erbij betrokken is. Sommige stappen horen bij beide rollen. Een kantoormedewerker kan het werk toewijzen, terwijl de veldmedewerker het op mobiel accepteert. Beide horen bij één workflow, niet bij twee verschillende.
Markeer eerst de gedeelde stappen
De makkelijkste manier om dit te plannen is gedeelde acties te scheiden van apparaatspecifieke acties.
Gedeelde acties zijn dingen als het aanmaken van een aanvraag, het toewijzen van een medewerker, het bijwerken van een status, het toevoegen van notities en het sluiten van een opdracht. Webgerichte acties zijn meestal het beoordelen van wachtrijen, het herverdelen van werk, het goedkeuren van afronding en het draaien van rapporten. Mobielgerichte acties omvatten vaak het accepteren van een taak, het uploaden van foto's, het vastleggen van een handtekening en het markeren van aankomst.
Dit helpt je zien waar de apps moeten verschillen en waar niet. De webapp kan meer filters en beheeropties tonen. De mobiele app kan grotere knoppen en minder keuzes gebruiken. Maar statuslogica, validatie en bedrijfsregels horen op één plek te blijven.
Kies vroeg één bron van waarheid voor statuswijzigingen. Als een taak alleen op "Voltooid" mag worden gezet nadat foto's en een klanthandtekening zijn toegevoegd, moet die regel in de backend staan. Hij mag niet alleen op het mobiele scherm of alleen in het adminpaneel bestaan.
Een eenvoudige test helpt: als dezelfde actie vanuit beide apps kan gebeuren, moet het resultaat identiek zijn? Als het antwoord ja is, is je workflow gedeeld. Zo niet, dan verbergen bedrijfsregels zich waarschijnlijk in de interface.
Definieer het kern-datamodel
Begin met de records waar beide apps het over eens moeten zijn. Begin niet met schermen. Begin met de echte dingen die je bedrijf elke dag bijhoudt: klanten, locaties, opdrachten, personeel, voorraad, facturen of inspecties. Als zowel de admin webapp als de mobiele veldapp dezelfde opdracht aanpassen, moet die opdracht bestaan als één record in één gedeeld datamodel.
Een nuttige test is te vragen: "Zouden deze twee apps het oneens kunnen zijn over wat waar is?" Als het antwoord ja is, is het model op de verkeerde plek gesplitst. De backend moet de enige bron van waarheid houden.
Voor elk kernrecord houd je de gedeelde velden bij elkaar. Een werkorder kan een ID, status, klant, locatie, toegewezen medewerker, geplande datum, voltooiingsdatum, notities, bijlagen en foto's bevatten.
Die velden zijn belangrijk voor beide ervaringen, ook al verschijnen ze verschillend. Het beheerteam kan roosters bewerken en personeel toewijzen vanuit een webdashboard. Het veldteam kan alleen het rooster bekijken, foto's uploaden en de opdracht als voltooid markeren. Het blijft hetzelfde record, alleen met verschillende machtigingen.
Voeg rol-specifieke velden alleen toe als er een echte noodzaak is. Als planners een intern prioriteitsscore nodig hebben, kan dat op dezelfde werkorder staan en verborgen zijn voor veldgebruikers. Als mobiele medewerkers een offline-synchronievlag of apparaatmetadata nodig hebben, voeg dat dan zorgvuldig toe zonder de hoofdzaak van het record te veranderen.
Vergeet de ondersteunende velden niet die apps bruikbaar maken in de praktijk. Eigendom laat zien wie een record heeft aangemaakt, bezit of toegewezen heeft gekregen. Tijdstempels tonen wanneer het is aangemaakt, bijgewerkt, gestart of voltooid. Bestanden en afbeeldingen bieden bewijs van werk. Notities helpen mensen uitzonderingen te verklaren zonder de hoofddata te veranderen.
Als je AppMaster gebruikt, betekent dit meestal dat je gedeelde entiteiten eerst modelleert en vervolgens verschillende UI- en toegangsregels toepast in de web- en mobiele apps. Dat houdt de logica gecentreerd in de backend in plaats van verspreid over twee interfaces.
Houd bedrijfsregels uit de schermen
Als de admin webapp en de mobiele veldapp allebei beslissen wat is toegestaan, zullen ze vrijwel meteen uit elkaar groeien. Het ene scherm accepteert misschien een waarde die het andere afkeurt, of de ene app zet een taak op "Voltooid" terwijl de andere nog denkt dat hij "Bezig" is.
De oplossing is simpel: houd bedrijfsregels in de backend en laat beide apps dezelfde logica aanroepen.
Validatieregels horen op één plek. Als een werkorder een klant, een locatie en ten minste één taak moet hebben voordat hij kan worden toegewezen, moet de backend dat elke keer afdwingen. De webapp kan een nuttige melding tonen en de mobiele app hetzelfde doen, maar geen van beide mag de regel bezitten.
Hetzelfde geldt voor statuswijzigingen. Gebruik één gedeelde statusflow voor beide apps, zoals Concept, Toegewezen, Bezig, Voltooid en Gesloten. Zodra die flow in de backend leeft, volgen beide apps hetzelfde pad. Het beheerteam kan werk toewijzen vanaf de webapp en het veldteam kan voortgang bijwerken vanaf mobiel, maar geen van beide apps kan stappen overslaan tenzij de backend dat toestaat.
Berekeningen en controles moeten ook op één plek draaien. Als de totale kosten afhangen van uren, materiaal, belasting of goedkeuringslimieten, doe dat dan in de backend. Als een technicus een klus niet kan sluiten zonder foto of handtekening, controleer dat ook daar.
Hoe dat er in de praktijk uitziet
Stel je een dienstverlening voor. Het kantoorteam gebruikt de webapp om opdrachten aan te maken en technici gebruiken de mobiele app op locatie. Beide apps moeten dezelfde backendlogica aanroepen voor het aanmaken van opdrachten, het toewijzen van personeel, het wijzigen van status en het berekenen van totalen.
Die scheiding houdt schermen eenvoudig. Elke app richt zich op wat gebruikers moeten zien en doen, terwijl de backend de regels beschermt die consistent moeten blijven.
Hoe plan je het stap voor stap
Begin met mensen, niet met schermen. Beschrijf wie het systeem gebruikt, wat ze doen en welke keuzes ze mogen maken.
Voor een admin webapp en een mobiele veldapp betekent dat vaak kantoorpersoneel, managers en veldmedewerkers. Het kantoorteam kan opdrachten aanmaken, mensen toewijzen, wijzigingen goedkeuren en werk afsluiten. Het veldteam kan alleen toegewezen opdrachten bekijken, voortgang bijwerken, notities toevoegen en bewijs uploaden.
Als dat duidelijk is, schets het gedeelde datamodel op één pagina. Houd het eerst eenvoudig: opdrachten, klanten, personeel, locaties, foto's en statushistorie. Voeg alleen de velden toe die elk record echt nodig heeft.
Ontwerp rond records en staatsovergangen, niet rond pagina's. Als beide apps dezelfde opdracht aanraken, moeten ze dezelfde statuswaarden, dezelfde toewijzingsregels en dezelfde goedkeuringslogica gebruiken.
Een eenvoudige planningsvolgorde
- Noteer de belangrijkste acties per gebruikersrol.
- Noteer welke data elke actie leest en verandert.
- Definieer de statussregels duidelijk.
- Koppel elk scherm aan de exacte data die het nodig heeft.
- Test het model met een paar echte taken van begin tot eind.
Die laatste stap is het belangrijkste. Neem een realistisch geval, zoals een reparatieverzoek dat op kantoor is aangemaakt, aan een technicus is toegewezen, ter plaatse is bijgewerkt en vervolgens door een manager is beoordeeld. Als je model die flow verwerkt zonder verborgen schermspecifieke regels, zit je op het juiste spoor.
Wat moet er anders zijn in elke app
De backend moet gedeeld blijven, maar de ervaring hoeft dat niet te zijn. Een admin webapp en een mobiele veldapp vervullen verschillende taken, dus ze moeten dezelfde records op verschillende manieren presenteren.
Aan de webkant hebben mensen meestal een breder overzicht nodig. Ze vergelijken veel records, sorteren kolommen, scannen geschiedenis, gebruiken filters en doen bulkupdates. Een planner of operationeel manager wil misschien tien werkorders tegelijk bijwerken, personeel toewijzen en statuswijzigingen in een tabel controleren.
Op mobiel telt snelheid meer dan overzicht. Een veldmedewerker heeft meestal één duidelijk antwoord nodig: wat moet ik hierna doen? Het startscherm moet de volgende taak, adres, contactgegevens, deadline en een knop voor statusupdate direct tonen.
Zelfde data, andere presentatie
Het belangrijkste idee is simpel: houd de records hetzelfde en verander de lay-out eromheen. Als beide apps hetzelfde werk-, klant-, status- en notitie-object gebruiken, blijven de bedrijfsregels op één plek.
Wat verandert is de interface. Web kan compacte tabellen, opgeslagen filters en bulkbewerktools tonen. Mobiel moet de huidige taak en de volgende actie benadrukken. Mobiel kan camerafoto's, handtekeningen, barcodescans of locatie verzamelen. Web kan diepere review, rapportage en exception handling ondersteunen.
Offline gebruik is een andere echte verschil. Een veldapp kan signaal verliezen in een kelder, onderweg of bij een klantlocatie. Dat beïnvloedt sync-ontwerp, conflicthandling en welke data op het apparaat moeten worden gecached. De admin webapp gaat meestal uit van een stabiele verbinding en kan meer vertrouwen op live updates.
Een eenvoudig voorbeeld is een inspectieproces. Het kantoorteam gebruikt de webapp om bezoeken toe te wijzen, resultaten te beoordelen en foutieve invoer in bulk te herstellen. De inspecteur gebruikt de mobiele app om het volgende bezoek te openen, foto's te maken, aankomst te bevestigen en het rapport te versturen. Verschillende schermen, hetzelfde inspectierecord.
Een eenvoudig voorbeeldscenario
Stel je een servicebedrijf voor dat apparatuurreparaties afhandelt. Het kantoorteam werkt vanaf laptops, terwijl technici de meeste tijd onderweg zijn.
Een planner gebruikt de admin webapp om een nieuwe werkorder te maken. Ze vullen klantnaam, adres, probleemdetails, prioriteit, geplande tijd en toegewezen technicus in. Dat creëert één gedeeld record, geen aparte webversie van de opdracht.
Later opent de technicus de mobiele app en ziet diezelfde werkorder. Het scherm ziet er anders uit omdat de klus in een andere context wordt gebruikt, maar de onderliggende data zijn hetzelfde. De technicus kan het adres bekijken, de klant bellen, de taakdetails controleren en voortgang bijwerken zonder iets opnieuw in te typen.
Op locatie voegt de technicus foto's van het beschadigde onderdeel toe, schrijft enkele notities en legt de handtekening van de klant vast. Dat wordt allemaal teruggeslagen naar hetzelfde werkorderrecord. De mobiele app maakt geen eigen nevensysteem voor foto's of notities; hij voegt simpelweg meer informatie toe aan het gedeelde datamodel.
Op kantoor opent de manager de admin webapp en beoordeelt de bijgewerkte opdracht. Ze kunnen zien wat in het veld is toegevoegd, het werk goedkeuren en de opdracht naar facturatie of opvolging sturen. Niemand hoeft twee versies van de waarheid met elkaar te vergelijken.
De statushistorie maakt dit nuttig. Als de planner de opdracht op "Gepland" zet, de technicus hem op "Bezig" zet en de manager hem sluit als "Voltooid", ziet iedereen dezelfde tijdlijn. Dat maakt het veel eenvoudiger om simpele vragen te beantwoorden: wie heeft de status gewijzigd, wanneer werd die gewijzigd en wat gebeurde er voor en na het bezoek.
Veelgemaakte fouten om te vermijden
De grootste fout is dezelfde regel op twee plaatsen zetten. Als de admin webapp zegt dat een opdracht van "Gepland" naar "Bezig" kan gaan en de mobiele app dat ook controleert, zullen die regels uit elkaar groeien. Houd statuswijzigingen, machtigingen en vereiste controles in de backend, waar beide apps dezelfde logica volgen.
Een ander veelvoorkomend probleem is aparte records maken voor wat eigenlijk dezelfde opdracht is. Teams doen dit wanneer ze willen dat de kantoorweergave anders aanvoelt dan de veldweergave. Dan heeft de admin-app een "afspraak", de mobiele app een "bezoek" en iemand moet ze synchroniseren. Dat leidt meestal tot ongelijke notities, dubbel updates en verwarring over welk record echt is.
Velden zijn een andere valkuil. Het is makkelijk om kolommen toe te blijven voegen omdat één team nog even een detail wil. Maar elk veld moet een doel hebben. Vraag waarom het belangrijk is, wie het gebruikt en of het invloed heeft op een regel, rapport of beslissing. Als het nut niet duidelijk is, laat het dan weg tot de behoefte echt bestaat.
Zwakke connectiviteit wordt vaak genegeerd tot de eerste dag op het veld. Een technicus opent de mobiele app in een kelder, op een landweg of in een loods met slecht bereik. Als de app voor elke actie een live verbinding nodig heeft, staat het werk stil. Plan welke data offline beschikbaar moeten zijn, welke acties kunnen wachten en synchroniseren later, en hoe conflicten worden afgehandeld wanneer het apparaat weer online is.
Namen kunnen ook een gedeeld systeem kapotmaken. Als het ene team een stap "Toegewezen" noemt, een ander team "Uitgereden" en een derde "Klaar", gaan mensen die als verschillende staten behandelen. Spreek vroeg één gedeelde vocabulaire af en gebruik die overal.
Een goede vuistregel is simpel: één opdracht moet één bron van waarheid hebben, één regel moet op één plek leven en één status moet één duidelijke naam hebben.
Snelle checks voordat je bouwt
Test het plan eerst op papier. Als het model eenvoudig genoeg is om in een paar minuten uit te leggen, is het meestal eenvoudig genoeg om stabiel te blijven terwijl beide apps groeien.
Een goede check is deze: kunnen beide teams naar hetzelfde record wijzen en hetzelfde bedoelen? Als het kantoorteam een opdracht, taak, klant of inspectierapport anders ziet dan het veldteam, ontstaat drift vroeg.
Gebruik een korte checklist:
- Kies één kernrecord, zoals een werkorder, en bevestig dat beide apps dezelfde versie lezen.
- Schrijf validatieregels één keer in de backend, niet in elk scherm.
- Test elke statuswijziging als één pad.
- Schets het model in één eenvoudig diagram.
- Strip de mobiele weergave tot de essentie.
Een klein scenario helpt. Stel je een admin webapp voor die reparatiebezoeken plant en een mobiele app die technici op locatie gebruiken. Het beheerteam heeft filters, rapporten en volledige klantgeschiedenis nodig. De technicus heeft misschien alleen vandaag's opdrachten, contactgegevens, veiligheidsnotities en een manier om status bij te werken nodig. Verschillende schermen zijn prima. Verschillende bedrijfsregels niet.
Nog een praktische test: verander een regel en kijk hoeveel plekken dat raakt. Als het aanpassen van "een foto is verplicht vóór afronding" betekent dat je backendlogica en verschillende schermen moet bewerken, begint het ontwerp al uit elkaar te vallen.
Volgende stappen
Als je één backend voor zowel web als mobiel wilt, begin dan niet met het in kaart brengen van elk scherm of elk teamverzoek. Begin met één workflow die elke dag telt, zoals het aanmaken van een opdracht, het toewijzen ervan, het bijwerken van de status en het sluiten ervan. Een kleine workflow is makkelijker te testen en laat snel zien waar het datamodel duidelijk is en waar nog lege plekken zitten.
Bouw de backendregels voordat je de schermen perfectioneert. Beslis welke velden verplicht zijn, wie de status mag wijzigen, wat er gebeurt als data ontbreken en welke acties waarschuwingen of opvolgtaken moeten triggeren. Wanneer die regels in de backend leven, kunnen de admin webapp en de mobiele veldapp er aan de oppervlakte anders uitzien maar toch dezelfde logica volgen.
Een praktische volgorde is eenvoudig: definieer de hoofdrecords en hun relaties, schrijf de kernbedrijfsregels en statuswijzigingen, test de workflow met voorbeelddata, ontwerp de webweergave voor kantoortaken en de mobiele weergave voor veldtaken, en review de eerste versie met echte gebruikers.
Die volgorde helpt je een veelgemaakte fout te vermijden: twee afgewerkte apps bouwen die het niet met elkaar eens zijn.
Als je sneller wilt gaan, kan een no-code platform zoals AppMaster helpen. Het laat teams data en bedrijfslogica op één plek definiëren en vervolgens een webapp en een native mobiele app om diezelfde basis heen bouwen.
Houd de eerste release klein. Vraag een manager om de webapp voor een echte taak te gebruiken en vraag één veldmedewerker om de mobiele app tijdens een daadwerkelijke dienst te gebruiken. Let op waar ze aarzelen, wat ze overslaan en wat ze verwachten dat er gebeurt. Los die punten eerst op en breid dan uit naar meer workflows.
Dat is meestal het veiligste pad: één gedeeld model, één set regels en twee ervaringen die rond echt werk zijn gevormd.


