All stacks

stack

Field & Mobile Workforce Stack

Offline-first React Native + a Node API for crews without reliable signal

The Field & Mobile Workforce Stack is for AppLiaison products whose users are not at a desk and frequently not on the internet — delivery drivers, HVAC technicians, construction site crews, last-mile dispatch. The defining problem is that a worker may scan a barcode, complete a checklist, and capture five photos while in a basement with zero bars, and the app must accept all of that work without complaint and reconcile it cleanly when signal returns.

Architecture

Architecture variant: mobile-first
Frontend
React Native via Expo SDK 50Expo RouterWatermelonDB (on-device SQLite, sync engine)
Backend
Node.js + Fastify APIPostgres 16 (server source of truth)Sync server (push/pull deltas, conflict policy)
Data + infra
Expo Application Services (builds, OTA)Render or Fly (Fastify, sync server, workers)Supabase or AWS RDS (Postgres)
Integrations
Mapbox (route optimization, navigation)Twilio (SMS dispatch + ETA notifications)Stripe (driver / contractor payouts via Connect, optional)Customer-provided dispatch system (webhook bridges)

When to choose this stack

  • Workers are in the field, not at a desk
  • The app must work offline for hours, not seconds
  • Barcode scans, signatures, and photo capture are part of the workflow
  • Route or job lists are dispatched from the back office and need to sync down quickly
  • The customer has an existing dispatch system the app integrates with, rather than replaces

What's NOT included

  • Heavy AR (e.g., AR-guided assembly) — possible as a custom add-on
  • Indoor positioning (UWB, BLE beacons) — partner integration, not in the box
  • Hardware procurement — we don't sell tablets or rugged phones
  • Telematics from vehicle CAN bus — see the Logistics partner integrations

How the pieces fit

The phone is the source of truth for the worker’s day. WatermelonDB on the device holds all the active jobs, checklists, and captured artifacts in SQLite. A sync engine pushes deltas to the server when signal returns and pulls down updates the worker hasn’t seen yet, with a clearly-documented conflict policy (last-writer-wins for most fields, append-only for photos and signatures).

The dispatcher portal is a server-rendered web app — dispatchers are at desks, with reliable internet, and benefit from a denser UI than the phone can support.

Why these choices

WatermelonDB over a custom SQLite wrapper: handling sync conflicts well is harder than it looks, and the failure mode of getting it wrong (lost work after a long offline session) is the worst possible failure for a field worker.

Fastify over Express or NestJS: the API surface is small and read-heavy when the workforce is online; Fastify is faster and the request/response schema validation is built in.

Mapbox over Google Maps: pricing is more predictable at scale, and the Mapbox Navigation SDK on mobile gives turn-by-turn that is deeply themeable.

Apps built on this stack