The office web app for an energy-efficiency contractor, used every day. Office staff run the business from it, and it’s the other half of Field Data Capture: techs capture work on the tablet, and the office sees it here.

What the office does in it

  • Dispatch on a live board: drag jobs onto techs’ days, and watch the crews move on a live map that updates from the vehicles’ GPS.
  • Keep track of customers: customers, projects and work orders in one place, with notes, photos and history from the field.
  • Text customers: two-way SMS from inside the app, so confirmations and replies sit on the customer’s record.
  • Bill the program and reconcile payments: match what was billed against what came back.
  • Run tech payroll from the work techs actually completed.
  • Read the business: about seventeen operational and financial reports, plus bulk imports from spreadsheets.

The crew map: today’s jobs as pins, colored by tech, with each van’s live position

Screenshots use demo data. Every name and address is made up.

How it works

  • One backend for office and field. Hub and the tablet app share one Supabase Postgres database. Changes from the field show up in the office without a manual import.
  • Tenant isolation in the database. Every row is scoped to a company with row-level security, across seven roles, so access is enforced by Postgres, not just by the UI.
  • Background workers handle batch jobs, imports and outside integrations (SMS, vehicle GPS, geocoding, PDFs, email).
  • React and TypeScript on TanStack Start, with TanStack Query and Table, Tailwind, Leaflet for the map and dnd-kit for the board.
  • Ships on merge. A merge to main deploys the app and the workers. Database changes go out as versioned migrations.