Skip to content
Grocery delivery platform

Salwa

A grocery delivery platform: customer app, driver app, and admin dashboard on one backend, built solo.

Sole engineer, three apps
SW
React NativeExpoNext.jsSupabasePostgreSQLMyFatoorahTypeScript
3
apps on one Supabase backend
2
stores for the customer app
Solo
backend, dashboard, both apps

Salwa is a grocery delivery platform for the Salwa neighbourhood in Kuwait: a React Native customer app on the App Store and Google Play, a React Native driver app, and a Next.js admin dashboard for the store team, all on one Supabase backend with MyFatoorah payments and a customer wallet. I designed and built all three as the sole engineer.

The context

A Kuwaiti grocery needed more than a storefront: customers ordering from their phones, drivers receiving and completing deliveries, and staff managing the catalog, inventory, orders, and payments from one place.

Three roles with different jobs, one source of truth, and payment through the gateway Kuwaiti customers already trust.

What I built

Three connected apps on one data model, shipped end to end including both store submissions.

  • Customer app: catalog, cart, checkout with MyFatoorah, wallet, order tracking
  • Driver app: assigned deliveries, status updates, route context
  • Admin dashboard: items and inventory with bulk sync, orders, users, drivers, reports export
  • Roles for Admin, Employee, and Driver enforced in Supabase Auth and RLS
  • Wallet credit and debit as atomic Postgres RPCs
  • Item images in Supabase Storage; visibility and archive flags respected in every customer query
  • App Store and Google Play submission, and an app transfer between developer accounts

How it works

One Supabase project serves all three apps. Roles live in auth metadata; the dashboard reads everything while the customer app filters to visible, non-archived items on every query, so RLS stays simple and employees keep full access. Money moves only through RPCs (credit_wallet, debit_wallet) so a wallet balance can never drift from its ledger.

The two mobile apps are separate Expo codebases sharing the same types and backend, which keeps the driver surface small and the customer surface fast. The Next.js dashboard writes to the same tables, so a catalog change is live in the app immediately.

React NativeExpoNext.jsSupabasePostgreSQLMyFatoorahTypeScript

The outcome

Salwa is live on both stores with drivers and staff working from their own apps, built and shipped solo.

It is the proof that I can take a multi-app product from the data model to two app stores on my own.

More work

Have a project like this?

I build platforms, apps, and systems like these end to end, from Cairo and remote worldwide. Tell me what you are building.

Get in touch