Project 01

Rahma

Arabic-first kitchenware commerce

An Arabic-first offline e-commerce app for browsing kitchenware, managing carts, and placing orders seamlessly.

FlutterDartRiverpodSupabaseFirebase
9:41
Rahma home screen with offers and new arrivals
The mission

Why this exists.

Small kitchenware shops in Arabic-speaking markets cannot justify payment gateways, and their customers often shop on a weak connection. Rahma exists so a local store can feel like a premium app — catalog, search, and checkout — without asking the owner to change how they already close a sale.

Inside the build

Thought through, end to end.

5 highlights

Offline-First "Smart Sync": Engineered a delta-sync architecture for instant, connection-free access and integrated Firebase push notifications to maintain user engagement.

WhatsApp Visual Checkout: Bypassed costly payment gateways by engineering an innovative engine that renders user orders into images using Flutter Canvas for direct store owner communication.

Culturally-Aware Search: Developed an Arabic search engine with aggressive performance optimizations including lazy-mounting and scroll-paused rendering — local-first with zero load on the backend.

Performance: Achieved a flawless 120fps UI throughout the shopping experience using strictly scoped state and dynamic rendering techniques.

UI/UX: Designed and implemented engaging onboarding screens and smooth custom animations throughout the application.

The hard parts

Constraints I designed around.

The features that look effortless were the ones that fought back.

  1. 01

    Instant catalog on a bad connection

    The obstacle

    Fetching the full product catalog on every launch is slow, expensive, and useless the moment the network drops.

    How I solved it

    Engineered a delta-sync pipeline: the first run caches everything in Hive, later runs send last_sync_time to Supabase and pull only adds, edits, and soft-deletes. No network? The UI opens from cache immediately.

  2. 02

    Checkout without a payment stack

    The obstacle

    Gateways are costly for a small shop, and the owner already lives in WhatsApp — a Stripe-style checkout would fight the real sales channel.

    How I solved it

    Built an OrderImageGenerator on Flutter Canvas that paints the cart into a receipt image, then hands it to a WhatsApp intent so the owner gets a visual order they can fulfill instantly.

  3. 03

    Arabic search that actually finds products

    The obstacle

    Diacritics and letter variants (أ / إ / ا) make naive search miss items sitting in the catalog.

    How I solved it

    Wrote an Arabic normalizer and fuzzy-filter over the local Hive cache — zero backend load, instant results, regardless of how the shopper types.

Product in motion

See how it feels.

A real walkthrough of the product, interactions, and complete flow.

Next project

Waslha

Post a delivery. The nearest driver takes it.

View next project
9:41
Merchant home with a one-tap create-delivery card and today's stats