Jonathan Hipolito

← All projects

Mobile app + dispatch

Callout field service

A mobile app for HVAC and plumbing technicians and the dispatch board that feeds it, shown on a made-up heating company in Minneapolis on a winter morning full of no-heat calls. The tech works each job on the phone, and the office watches it happen. Both keep working when the van loses signal.

Callout dispatch board with the day's schedule for five technicians next to Erik's phone, offline, with two checklist changes waiting to sync
A no-heat job open on the dispatch board with parts and the tech's notes, a map of vans across Minneapolis, and the same job's parts and notes on the phone

What I built

  • A React Native app built with Expo: the day's route, job details with the equipment on site and past visits, GPS check-in on arrival, a checklist per job type, before and after photos from the camera, parts from van stock, notes, and the customer's signature on the glass
  • Offline first: every change goes into an outbox on the phone and shows up on screen right away, then syncs when signal is back. Replays are safe to repeat, checklist taps merge by time, and if dispatch moved the job or changed its notes meanwhile, the tech is told what changed instead of anything being overwritten
  • The phone and the server share one set of sync rules in TypeScript, so what the tech sees offline is what the server will accept
  • A dispatch board with a drag-and-drop schedule per tech, open calls to assign, a live map of jobs and vans on free OpenFreeMap tiles, and each job filling in as the tech works it. Moving a job sends a notification to the phone
  • Live over WebSockets from one Durable Object per visitor. The other four techs move through their day on their own so the board never sits still
  • A tracking page for the customer with the tech's first name, van and arrival window, plus an Android APK built in GitHub Actions. On an iPhone or a laptop the same app runs as a web build inside the demo

Stack

React Native, Expo, TypeScript, React, Cloudflare Workers, Durable Objects, MapLibre

Live

dispatch-demo.jnathan.dev ↗