Skip to content
Nikolaos Pogas

← Selected work

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

  1. Phone enters job-site geofence

    detected by the OS

  2. Status event created

    GPS, timestamp, trigger source

  3. Offline sync queue

    held until there is signal

  4. Supabase event log

    append-only

  5. Office dashboard

    live over Supabase Realtime

Geofence to dashboard.

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