Arke
Field-service app for technical installation crews.
Source is private.
Problem
The office needs to know where each crew is and what it is doing. Technicians on a job should not have to tap through an app to say so. And a billing dispute needs evidence.
What I built
- An Expo / React Native app that uses OS-level geofencing to set a technician’s status automatically. No taps.
- An offline sync queue. Status changes made without signal are sent when the phone reconnects.
- A live dashboard for the office over Supabase Realtime.
- An immutable status event log with GPS, timestamps and trigger source, kept as evidence for billing disputes.
How it works
The phone decides, not the technician
Each job site is a geofence registered with the operating system. When the phone enters or leaves it, the OS wakes the app and the app records a status change. The technician does nothing.
Offline first
Signal on a job site is not guaranteed. Every status change goes into a local queue first, and the queue syncs to Supabase when the connection returns. Each event keeps the time it happened.
An append-only record
Status changes are stored as events that are never edited: GPS position, timestamp and what triggered the change. When a client disputes a bill, the log is the evidence.
The office dashboard subscribes to the same events over Supabase Realtime, so it updates as crews move.
Data flow
Phone enters job-site geofence
detected by the OS
Status event created
GPS, timestamp, trigger source
Offline sync queue
held until there is signal
Supabase event log
append-only
Office dashboard
live over Supabase Realtime
Screens
Screenshot to follow
Technician app Screenshot to follow
Office dashboard Screenshot to follow
Status event log
Stack
Expo · React Native · TypeScript · Supabase Realtime · PostgreSQL