Field technicians' app that works offline
Tasks, customer sites, equipment, van stock and payments – on the technician's phone, even where there is no signal.
Developed continuously since late 2023, it syncs 33 data types to the phone.
- Client
- Equipment sales and service company
- Our role
- Mobile app
- Years
- 2023–2026
- Technologies
- Flutter / Dart, SQLite, Node.js / TypeScript (Koa), MongoDB change streams, Server-Sent Events, Firebase Cloud Messaging, Google Maps, Sentry, GitHub Actions
The task
Service technicians need their tasks, customer sites and installed equipment, van stock, photos, calls and payments wherever they are – including places with a poor connection or none at all.
The solution
A Flutter app on a local SQLite database: every screen reads local data, and every change is queued and synced.
What the app does
- Task list, calendar and map.
- Customer sites and installed equipment, with their service history.
- Materials taken from the technician's own van stock.
- Leads and service requests.
- Test results, photos and video.
- Calling customers, with call logging and reminders to call again.
- Payment links and an in-app bug report.
Alerts for urgent tasks are being rolled out now: technicians' phones ring in turn until one of them accepts the task.
Sync
The app runs on a schema-driven sync engine:
- One schema file, from which the app's code is generated.
- Per-user permission rules.
- Real-time updates over Server-Sent Events.
- An interrupted re-download resumes where it stopped.
The app on the phone
- The data the work needs, in a local database
- Works offline
- Changes wait in a queue
Changes go up in batches
Only new data comes down
Sync server
Conflicts resolved on the server
Other devices
Get the changes in real time
Results
- Developed continuously since late 2023.
- 33 data types are synced to the phone.
- The interface is in Lithuanian, English and Russian.
- Releases go to TestFlight and Google Play from CI.
Want a similar solution?
A few sentences are enough – we'll reply and talk through how we could help.