Driver Delivery App
A React Native app for delivery drivers — assigned drops, navigation, proof of delivery, cash reconciliation, and an offline queue built for South African signal.
Working build · ships with the franchise platform
The hardest place to run software is a moving vehicle
A driver on a delivery is the one person in the chain with no desk, no reliable signal and no time. Anything that loses a tap in a stairwell, or asks them to work out change one-handed in the rain, produces a night that does not reconcile.
Most of the engineering in this app is not the screens. It is what happens when the network disappears halfway through a delivery, when a driver taps the same button four times, and when the phone is handed to somebody else at the end of a shift.
A shift, from clock-on to cash-up
- A driver sees only the deliveries assigned to them, and navigates to the customer
- Mark collected, delivered or failed, with failure reasons from a closed, agreed set
- Delivery confirmation codes, with a capped retry and recorded reasons for skipping one
- Cash on delivery — the driver enters what they were handed; change and shortfall are derived
- Clock on/off and end-of-shift cash-up
- Push notification when a delivery is assigned
- Background location while a delivery is in progress, with an in-app tracking notice
- A privacy screen showing what is tracked and letting the driver download their own data
Built for the network we actually have
A field app is judged on what it does when things go wrong. Each of these is a decision in the code, not a feature on a slide.
- Separate JWT audience — a driver token cannot reach staff or customer endpoints
- Durable offline queue that auto-flushes when the radio returns or the app is foregrounded
- Repeat taps collapse and per-order ordering is preserved, so a queued delivery cannot overtake its own collection
- Replay is safe by server contract — the API returns 200 without writing a second audit row
- A network failure never signs a driver out; only a definitive 401 from the refresh endpoint does
- Background location stops when nothing is being carried, and sampling rates come from the server alongside the notice quoting them
- Push bodies carry no personal information by contract — the order number is the whole message
Where this one actually stands
The app is built and runs: a driver can sign in, work a shift, complete deliveries and cash up. It ships alongside the franchise ordering platform and talks to the same API.
Two things are built but not yet proven on a handset. Push notifications and background location both need an Expo build tied to a published app identity, and that identity belongs to whoever owns the deployment — so it is a first step of a real engagement, not something we can complete on our own. Both fail softly by design: no notifications and no location trail, with everything else working normally.
We would rather tell you that than show you a handset screenshot we had staged. The screens above are the dispatch side of the same flow, which is running today.
Get your team off paper and WhatsApp
Delivery drivers, technicians, inspectors, reps — if your people work off a phone away from the office, this is the pattern. Tell us what they do all day.