Independent Mine Maintenance
Record field work where the signal is poor.
Independent Mine Maintenance repairs equipment at mine sites. I built its field app in Flutter and the Phoenix and Ash server behind it.
The problem
Technicians service and repair equipment in pits and plants. The signal there is often weak or absent.
A daily service report must not be lost. It also must not arrive twice when the connection drops and the app tries again.
Repairs happen far from a desk
Field crews service, rebuild, and fabricate equipment on site. The app must save their work without a network.
I designed the report workflow around that condition first.
Open the day's assignment
The technician sees assigned jobs as a list, by week, or by month. A job carries its customer, site, and work order.
The screens here run in the app's demo mode with sample data. The yellow banner stays in the captures.
Write the report on the device
The report saves to SQLite through Drift as the technician types. Truck, machine notes, materials, and customer documents stay in one form.
The same job works on a phone and on the larger iPad screen.
Send it once, even if it is sent twice
On submit, the report goes into a durable queue on the device. The app sends it when service returns.
The server gives each submission an idempotent receipt. A repeat send keeps one report. The app also recovers from conflicts and duplicates, and a job can continue on a second device.
- Save on device SQLite and Drift autosave each change.
- Durable queue Submit works offline and waits for service.
- Server receipt An idempotent receipt keeps one copy.
- Catch up Snapshots bring each device up to date.
Produce the service report
The server builds a daily service report for the customer. It lists time, travel, and the work done in order.
This sample uses fictional data. It is a separate example, not the output of the demo screens above.
What I built
- Flutter field app for iPhone and iPad
- SQLite autosave through Drift
- Durable offline queue with submit and resubmit
- Idempotent server receipts with Phoenix and Ash
- Conflict, duplicate, and cross-device recovery
- Server-side policy, audit records, and service report output
Result
- The offline report workflow is implemented from autosave to server receipt, with recovery for conflicts and duplicates.
- A technician can start a report on one device and continue it on another.
The phone and iPad screens use demo mode with sample data. Demo mode does not connect to a server, so these images do not show live sync. The field photo is from IMM.