Case Study
Driver Management App for Last-Mile Logistics Operator
A React Native driver app that eliminated paper-based job sheets, reduced failed delivery attempts by 29%, and saved an estimated 3.2 hours of admin per driver per week.
- Client
- Swiftline Logistics
- Industry
- Logistics
- Duration
- 16 weeks
- Delivered
- July 2025
Key Results
Admin time saved: 3.2 hrs/driver/week
Failed delivery attempts -29%
Proof of delivery digitised: 100%
Driver onboarding: 3 days → 4 hours
Fuel cost reporting automated
The Challenge
Swiftline Logistics operates 140 delivery drivers across four regional depots. Their existing workflow relied on:
- Paper job sheets printed at depot each morning
- Manual proof-of-delivery signatures on carbon-copy forms
- Drivers calling dispatch to report failed deliveries or route issues
- End-of-day manual data entry of completed jobs into their TMS
The inefficiency was significant: the operations manager estimated that the admin burden of the paper-based system cost the equivalent of four full-time administrative roles. Failed deliveries — where drivers couldn't locate addresses or customers weren't home — were being re-attempted without any additional context.
The objective: replace the paper system with a driver-facing mobile app that integrated with their Transport Management System (TMS) and eliminated manual data entry.
Architecture
Offline-First Design
The most critical architectural decision was offline-first. Drivers operate in areas with unreliable mobile coverage — industrial estates, rural routes, underground car parks. The app had to work without connectivity and sync when it returned.
Implementation:
- WatermelonDB for local SQLite storage on device — all job data available offline
- Sync queue that batches completed jobs and PODs and uploads on connectivity restoration
- Conflict resolution for the edge case where dispatch updates a job while the driver is offline
- Background sync via React Native Background Fetch — syncs every 15 minutes even when app is not in foreground
Proof of Delivery
Digital POD replaced carbon-copy forms:
- Recipient signature captured via React Native Skia canvas (high-quality rendering at any resolution)
- Photo capture for parcel-at-door deliveries and damage documentation
- GPS coordinate captured at time of POD signature — geofenced validation checks driver is within 100m of delivery address
- POD package (signature + photo + timestamp + GPS) uploaded encrypted to S3 and linked to job record in TMS
Route Optimisation Integration
We integrated with Google Maps Platform for:
- Turn-by-turn navigation launched directly from job view
- "What Three Words" API for precise delivery location where house numbers are unclear
- Estimated arrival time calculation fed back to the operations dashboard
Fleet Operations Dashboard
A companion Next.js dashboard for depot managers:
- Live job status board — all drivers, all jobs, real-time status
- Exception alerts — failed deliveries, jobs delayed by more than 30 minutes
- End-of-day summary generation (replacing manual reporting)
- Driver performance metrics — jobs completed, POD compliance rate, average time per delivery
Results
Administrative efficiency:
- Paper job sheets: eliminated entirely
- Manual TMS data entry: eliminated entirely
- Estimated admin time saved: 3.2 hours per driver per week
- Driver onboarding time (learning the system): reduced from 3 days to 4 hours
Delivery performance:
- Failed delivery first-attempt rate fell from 14% to 9.9% (-29%) — attributed to better address information and customer notification features
- POD compliance rate: 100% (vs 87% on paper forms, which were sometimes lost or illegible)
Operational visibility:
- Operations managers gained real-time visibility across all 140 drivers for the first time
- Fuel cost reporting automated from GPS data — previously required manual odometer logging
App reliability:
- Offline mode triggered an average of 14 times per driver per day
- Zero data loss events attributed to offline sync in the first 90 days
- Crash-free session rate: 99.6%
Technical Challenges
The signature capture component required significant iteration. Early versions using standard React Native touch handling produced signatures that looked thin and inconsistent on high-DPI displays. Migrating to React Native Skia — with pressure-simulation based on touch velocity — produced signatures that were both accurate and legally defensible.
The offline sync conflict resolution took longer than anticipated. The edge case of a dispatch-side job update colliding with a driver-side completion required a last-write-wins policy with an audit log — which became a valuable feature in its own right for dispute resolution.
