TSOFT Mali - Expert Software Engineering & IT Solutions
Read all articles
mobile

Rural Agritech & Fintech: Building Apps That Survive Without 4G

I
Ibrahim K.Lead Developer
February 25, 20265 min read
Malian farmer using a connected tablet in the field.

The first deployment crash

I've seen this enough times that it's almost predictable. A young Malian startup convinces a backer, raises money on a promise of financial inclusion for farmers in Ségou or Sikasso. The team heads to the field, proud of what they've built. Phone comes out. App won't load.

No server error. The API is running. The code is clean. But nobody tested it on an Edge network at 15 kbps.

That's the invisible problem when you build from a Bamako office with a fiber connection.

What 40 kbps actually does to your app

A typical React Native app ships 4 to 7 MB of JavaScript that needs to download on startup. It checks server state before showing anything. In Bamako that takes half a second. Between Koutiala and Yorosso, the Edge network fluctuates — sometimes 20 kbps, sometimes it disappears for two minutes entirely.

The app freezes. White screen. Infinite spinner.

The farmer closes it. He won't come back. Honestly, you can't blame him.

The only approach that holds: not needing the network

We call it Offline-First, and it means exactly what it says. The app stores everything locally — entries, transactions, harvest photos — directly on the phone. SQLite for Flutter, IndexedDB for PWAs. Nothing goes to a server until you explicitly send it.

The sync happens later. Not constantly. When the phone catches signal, a background process quietly pushes the cache to the central server. The user sees nothing, does nothing. It's invisible.

In zones where signal genuinely doesn't come back? We wire in a USSD fallback or a bare-bones WhatsApp text bot. Yes, it's ugly. But it runs on the field agent's old Nokia, and that's what actually matters.

The real hidden work behind this architecture

Here's what outside agencies miss: building real Offline-First isn't just plugging in SQLite. You have to decide what happens when two users edit the same record without a connection — the classic sync conflict problem. You have to manage data queues, prioritize what gets sent first when the network returns, and account for the fact that low-end phones often have under 2 GB of free storage.

We solved these problems because we ran into them. Not in theory.

WhatsApp