Skip to content
All Projects
E-commerce
WebiOSAndroid2025

Africa Store

One Flutter codebase. Three live platforms. Zero platform bugs.

Launched on Web, iOS & Android simultaneously — zero platform-specific bugs at release.

Africa Store screenshot
3
Platforms
EN / AR
Languages
< 0.1%
Crash rate
1 release
Sprint

The Challenge

The client needed a complete e-commerce marketplace across three distribution surfaces — a web storefront, an iOS app, and an Android app — without the budget for three separate codebases or three separate engineering sprints. The catalog required real-time stock availability, the cart had to stay in sync across sessions, and every component needed to work in both English and Arabic (RTL).

The Solution

I built a single Flutter codebase with platform-adaptive breakpoints: the same components respond naturally to a 375 px phone screen and a 1440 px desktop viewport. All three platforms share one Firestore data layer, one Firebase Auth session, and one Cloud Functions backend. Platform-specific UX differences — iOS navigation patterns, Android back-gesture handling, web scroll physics — are handled with Flutter's built-in platform detection rather than conditional code duplication. The RTL layout is activated at the app level so every widget flips correctly without per-widget overrides.

Key Engineering Decisions

Provider for state management

Chose Provider over BLoC for this project because the state topology is flat — cart, auth, and product streams are independent. Provider keeps the dependency graph simple and the test surface small.

Firestore listeners over HTTP polling

Cart and order status use real-time Firestore listeners. When a seller confirms an order, the customer's app updates in under a second at no extra engineering cost — no polling, no webhooks.

Cloud Functions for side-effects

Payment confirmation, inventory reservation, and push notification dispatch all run in Cloud Functions. This keeps client-side logic thin and makes order flow auditable and retryable.

Shared auth token refresh

Firebase Auth handles token refresh transparently across web and mobile. One sign-in persists across all three surfaces — the user never has to log in twice.

Tech Stack

FlutterDartFirebase AuthFirestoreCloud FunctionsFirebase StorageREST APIsProvider

Outcomes & Results

3
Platforms shipped
Web, iOS and Android in a single sprint
< 0.1%
Crash rate
Measured over the first 30 days of production
0
Platform-specific bugs
At launch — no "works on web but not iOS" issues
EN/AR
Languages
Full RTL support across every screen

What the Client Said

Flutter e-commerce app — Web, iOS & Android

Ahmed delivered our web storefront, iOS, and Android apps from a single Flutter codebase in one sprint cycle. The apps feel native on every platform, the Firestore sync is instant, and we haven't had a single production crash since launch. Exactly what a founder needs — fast delivery, no drama.

Karim Ashraf
Founder & CEO
Cairo, EG

Live Links

Ready to build?

Need something similar built?

I'm available for new projects. Discovery calls are free and I typically respond within 24 hours. You'll work directly with me — from the first call to launch.