Two hostile conditions at once
Software running in Kenya faces two independent failures that frequently strike together: the internet drops, and the power cuts. A cloud app assumes neither happens. Reality is that a transformer trips, the router dies, and the till loses power - all in the same moment, in the middle of a busy afternoon.
Building software that survives this is not about heroics; it is about assuming failure and designing for it. If the software expects a perfect connection and clean shutdowns, every outage is a crisis. If it expects interruptions, every outage is a shrug.
Surviving the internet dropping
The first pillar is connectivity resilience. The software must keep working when the line goes down, storing what happens locally and syncing it back when the connection returns. Users should barely notice the transition.
That means local-first data capture, a sync layer that queues work and uploads it in order, and conflict handling for when multiple devices changed data while offline. It also means the interface never hangs waiting for a server that is not answering - it degrades gracefully, tells the user what is happening, and carries on with what it can do locally.
Surviving the power cutting out
The second pillar is power resilience, which is subtler. When a device loses power mid-operation, badly designed software can be left in a corrupted state - a sale half-recorded, a file half-written, a database in limbo. The fix is to make operations atomic: they complete fully or not at all, and the system can always recover to a known-good point on restart.
Data has to be written safely so an abrupt shutdown never leaves it inconsistent. Then, when the machine powers back on, the software resumes cleanly and continues syncing whatever was pending. The user restarts and simply keeps going.
Designing for the connections people actually have
Even when there is internet, it is often thin, shared or metered. Software that assumes fast, unlimited data becomes sluggish and expensive on real Kenyan connections.
- Keep payloads small so screens load on slow links.
- Sync efficiently - send only what changed, not everything each time.
- Cache aggressively so common actions do not need the network.
- Show clear loading and offline states so users are never confused.
- Be mindful of data cost, since users may be paying per megabyte.
Every network call is a gamble - treat it like one
On a flaky connection, any request to a server, to M-Pesa, or to KRA may hang, fail halfway, or arrive twice. Resilient software treats every network call as unreliable by default.
That means sensible timeouts so the app never waits forever, retries with backoff so a transient failure recovers on its own, and idempotency so a retried request does not double-charge a customer or duplicate an invoice. Pending states are represented honestly rather than optimistically assumed to have succeeded. These habits are what stop flaky infrastructure from turning into corrupted business data.
Software and simple infrastructure together
Great software design carries most of the load, but pairing it with basic infrastructure closes the last gap. A UPS or inverter keeps a critical till alive through a short outage. A mobile data fallback lets the router switch networks when fibre fails. A spare device provides continuity if one dies.
The software should assume none of this exists and still behave correctly - but when it is present, the combination is what keeps a business genuinely uninterrupted. Resilience is a stack: good code first, sensible backups second.
How Upeosoft engineers for resilience
We build for the Kenya that exists, not an idealised one. That means offline-capable applications with robust sync, resumable operations that survive sudden power loss, low-bandwidth design that stays usable on thin connections, and network handling with timeouts, retries and idempotency baked in.
We design this resilience in from the first architecture decision, because it is far cheaper than retrofitting after the outages start costing you. If you want software that keeps your business running when the internet and power do not, talk to Upeosoft and we will build it to survive real conditions.
