Context
Surtirally supplies fuel to the teams at the Dakar Rally in Saudi Arabia. Its field operators work in the desert, where connectivity comes and goes, and they needed to log every operation without depending on the network.
Freelance work as part of a team: I built the mobile app, others built the Vue 3 back office and the AdonisJS backend.
What I did
- Offline-first Flutter app for Android and iOS: the whole operation works without a connection.
- Local SQLite database that syncs automatically with the backend when there's network.
- Queue system for expenses and consumption logged offline, syncing automatically when signal returns.
- Expense logging with receipt photos, direct contact by call or WhatsApp, and navigation to distribution points with Google Maps.
Challenges and achievements
- A month in the desert. 45 operators, from Argentina and local staff, used the app for a whole month in the middle of the Dakar Rally.
- Nothing lost, nothing duplicated. Expenses and consumption logged without signal wait in a local queue and are sent once the connection returns. Each record stores the ID the backend assigns it, so a retry never uploads it twice.
Stack
FlutterDartSQLiteGoogle MapsAdonisJSVue 3