Geo-fence innsjekk
Stempling skjer normalt innenfor et definert område rundt arbeidsstedet, med manuell reserveløsning kunden må slå på.
TapInn er Aprex sin løsning for virksomheter med ansatte på flere lokasjoner. Produktet samler geo-fence innsjekk, sjekklister, HMS-rutiner, avviksrapportering og dokumentasjon i én arbeidsflyt, fra mobilen i felt til oppfølging hos leder. Dette er historien om hvordan vi bygget det, hvilke tekniske valg vi tok, og hva vi endret underveis.
Sist oppdatert: 26. september 2026
Mange feltteam bruker fortsatt papir, Excel, meldinger eller flere separate systemer for oppmøte, timelogg, sjekklister og avvik. Det gir dobbeltarbeid og svak sporbarhet. Når ledelsen skal dokumentere hva som faktisk er gjort på hver lokasjon, ligger svaret spredt over chatlogger, regneark og bilder på private telefoner. TapInn angriper dette med én enkel idé: arbeidet dokumenteres der det skjer, mens det skjer.
Løsningen består av tre atskilte flater. Ansatte bruker mobilappen eller mobiltilpasset web. Ledere og kundeadministratorer jobber i en egen portal med oversikt over oppmøte, oppgaver, avvik og dokumentasjon. I tillegg finnes intern drift for salg, support og administrasjon. Nyregistrering går gjennom en egen åpen flyt.
Innsjekk er kjernen i TapInn, og arkitekturen er geo-først: stempling skjer normalt innenfor et definert område rundt arbeidsstedet. Manuell stempling utenfor geofence finnes som reserveløsning, men bare der kunden eksplisitt har slått den på. Prosjekter kan ha egne geofence-områder, slik at stemplingen knyttes til riktig prosjekt. Klientens klokkeslett stoles det ikke blindt på: innsjekkstidspunktet klemmes mot servertid innenfor et vindu på omtrent to minutter, med en absolutt grense på 48 timer for å fange opp klokker som har løpt løpsk.
Ansatte jobber ofte der dekningen er dårlig: kjellere, parkeringshus, landlige områder. Stempling og andre handlinger køes derfor lokalt på telefonen og sendes når forbindelsen kommer tilbake. En serverside-idempotenskontrakt hindrer duplikater: skriveruter tar en valgfri Idempotency-Key-header, første forespørsel med en gitt nøkkel kjører som normalt og svaret mellomlagres, mens en reprise med samme nøkkel og samme innhold får tilbake det opprinnelige svaret uten ny rad og uten at bivirkninger som ledervarsler kjøres på nytt. Samme nøkkel med ulikt innhold gir feilkoden 409. Nøklene er scoped til leietaker, bruker, endepunkt og nøkkelverdi, aldri globale, og bare vellykkede svar mellomlagres.
TapInn er bygget som et modulsystem der funksjonalitet slås på per behov: geotidsstempling, turnusplanlegging, AI-planlegging, tilgjengelighet, vaktbørs, fravær, oppgaver, kommunikasjon, samsvar, HMS, kostnadsprognoser, prosjekttid og dokumenter. HMS-området dekker hendelsesrapportering med offline-kø på mobil, inspeksjonsverktøy, kompetanseoversikt, kjemikalie- og sikkerhetsdatablad, utstyr, risikovurderinger og tiltak, pluss varsling av kritikkverdige forhold med egen overleveringsflyt til saksbehandler. HMS slås på per leietaker etter at virksomheten har bekreftet at vilkårene for bruk er oppfylt. På lønnssiden leverer TapInn lønnsklar CSV, eksportprofiler, lønnsartmapping, forhåndskontroll før eksport, eksportpakker med historikk, periodelås og lønnskostnadsoversikt. Direkte integrasjoner mot lønnssystemer er eksplisitt utenfor scope: produktet lager et kvalitetssikret eksportgrunnlag som kunden tar videre inn i sitt eget lønnssystem. TapInn inneholder heller ingen fakturering.
Først: én kodebase for web og API. Next.js-applikasjonen server både brukergrensesnitt og API-ruter, med felles validering og én deploy å forholde seg til. Andre: Postgres med Prisma og egne tabeller. Databasen er Neon Postgres, skjemaet bruker egne tapinn_*-tabeller, og migreringer kan øves i isolerte øvingsmiljøer før de kjøres mot reelle databaser. Tredje: native apper, ikke bare web. Feltarbeid skjer på telefonen, ofte med hansker, dårlig lys og svakt nett, så iOS-appen er bygget med SwiftUI og Android-appen med Kotlin. Fjerde: geo-først med strenge standarder. Hver mykning av innsjekksreglene er en innstilling kunden slår på, med streng standard. Femte: hendelser og revisjon som førsteklasses data. Stemplinger, avvik, varsler og eksporthandlinger logges slik at de kan spores i ettertid, sammen med aktivitetslogging, eksporthistorikk og periodelås.
Produktet har beveget seg raskt. Nærhetsbasert innsjekk ble tidlig tonet ned til fordel for geo-fence som hovedmekanisme. Sommeren 2026 gikk med til å få idempotens- og offline-kontrakten på plass. HMS-området vokste fra enkel avviksregistrering til et bredt samsvarsområde med inspeksjoner, kompetanse, kjemikalier og varsling. I september 2026 valgte vi e-postkoder i stedet for BankID for signeringsflyter, noe som senker terskelen for feltansatte uten å gi slipp på verifiserbar identitet: hver signering bindes til dokumenthash, part, tidspunkt og intensjon, med full revisjonsspor. Samme høst ble det bygget et omfattende MCP-lag, maskinlesbare verktøygrensesnitt over planlegging, bemanning, HMS, administrasjon og integrasjoner, som åpner for AI-assistert drift på toppen av TapInn-dataene.
Kvalitetsarbeidet følger et fast mønster: definer porten, dokumenter beviset, skill mellom hva som er testet og hva som gjenstår. Hvert funn klassifiseres med status og eksakt commit, kjøring og miljø, og bevis teller bare for den commiten og det miljøet det ble hentet fra. Webutgivelser går via et diagnosescript som sjekker vertsmaskin, Node-versjon og miljø, deretter produksjonsutgivelse med røyktesting mot live-miljøet og automatisk tilbakerulling ved feil. Overvåking går over Sentry uten personopplysninger som standard. Personvern er behandlet som arkitektur: dataminimering, innsyn og sletting er bygget inn i produkt og avtaler. Lokasjonsdata samles bare i den grad innsjekk krever det. For opplysninger om ansatte som bruker TapInn i jobben, er arbeidsgiveren (kunden) behandlingsansvarlig og Aprex databehandler etter databehandleravtalen; Aprex er behandlingsansvarlig for egne nettsider, kundekontakt og supporthenvendelser.
Den viktigste lærdommen er at tillit er produktets egentlige database. Tidsdata som ikke stoles på, blir ikke brukt, uansett hvor pene dashboardene er. Derfor har vi investert så tungt i geo-regler, klokkevalidering, idempotens og revisjonsspor: hvert lag fjerner én grunn til å tvile på tallene. Den andre lærdommen er at offline ikke er et unntak, men normalen i feltarbeid. Offline-kø med serverside-idempotens er dyrere å bygge enn en enkel POST, men det er forskjellen mellom et verktøy de ansatte stoler på og et de jobber rundt. Den tredje er at scope-disiplin er en funksjon: hver gang vi har sagt nei til å bygge lønnsintegrasjoner, fakturering eller overvåkingsfunksjoner direkte inn i produktet, har TapInn blitt tydeligere å forstå, enklere å vedlikeholde og ryddigere å dokumentere.
Dette er byggesteinene artikkelen går gjennom, fra innsjekk og offline-kø til HMS, eksport og drift.
Stempling skjer normalt innenfor et definert område rundt arbeidsstedet, med manuell reserveløsning kunden må slå på.
Innsjekkstidspunktet klemmes mot servertid innenfor omtrent to minutter, med absolutt grense på 48 timer.
Handlinger lagres lokalt på telefonen ved dårlig nett og synkroniseres når forbindelsen kommer tilbake.
Idempotency-Key hindrer duplikate skrivinger ved replay, med 409 ved feil gjenbruk av nøkkel.
Hendelser, inspeksjoner, kompetanse, kjemikalier, risiko og varsling som del av den daglige arbeidsflyten.
CSV, eksportprofiler, lønnsartmapping, forhåndskontroll, historikk og periodelås, uten direkte lønnsintegrasjoner.
iOS med SwiftUI og Android med Kotlin mot samme API-base som webklienten.
Skriptede utgivelser med tilbakerulling, Sentry uten personopplysninger som standard, og revisjonsspor på handlinger.
TapInn er Aprex-produkt i daglig drift. Vi vet hva som skjer etter lansering, fordi det er vi som får telefonen når noe stopper. Tall og påstander brukes bare der de kan dokumenteres.
Send kort om antall ansatte, lokasjoner, dagens timelogg og hvilke systemer TapInn eventuelt må snakke med.
Kontakt Aprex om TapInn →