Skip to content
Omar Aldanaf

Case study

MobileBackend/APIDashboard

Soukly

Multi-vendor delivery platform for Lebanon: a Flutter customer app, real-time vendor and driver dashboards, automatic driver dispatch and a Laravel backend.

Client
Own product (co-owned)
Industry
Delivery & local commerce
Status
In progress
Public landing page.

Overview

Soukly connects customers, vendors and drivers. Customers order from local restaurants, coffee shops and stores through the mobile app; vendors receive and accept orders in real time on a web dashboard; drivers are dispatched automatically; and a super admin runs the whole marketplace. A co-owned product, with an Android and iOS app built in Flutter and a backend built in Laravel.

The problem

A delivery marketplace has to coordinate three parties in real time (the customer ordering, the vendor preparing and the driver delivering) with pricing and payments the platform can trust.

What I built

  • A Flutter app for customers on Android and iOS
  • A Laravel API with Sanctum tokens, and real-time vendor alerts over WebSockets (Laravel Reverb)
  • Queue-driven driver dispatch with offers, timeouts and automatic retries
  • A unified payment layer: cash on delivery is live, with Whish Pay and MontyPay integrations under way

Key features

  • 01Phone number sign-in with Firebase one-time codes, exchanged for a secure API token
  • 02Personalised home feed: top rated, new, under 30 minutes, free delivery and reorder
  • 03Vendor pages with menus, item options and ingredients, and stock-aware ordering
  • 04Single-vendor cart and checkout with saved addresses and distance-based delivery fees calculated on the server
  • 05Live order tracking in six steps, with push notifications at every stage
  • 06Vendor dashboard with real-time order alerts, menu and stock management, a weekly schedule and Excel reports
  • 07Driver dashboard with delivery offers, status updates with a pickup photo, availability and earnings
  • 08Super admin panel for vendors, drivers, customers, categories, commissions, delivery bands, dispatch settings and accounting exports

Architecture

  1. Flutter app
  2. Laravel API
  3. Queue + Reverb
  4. MySQL
Architecture: Flutter app to Laravel API to Queue + Reverb to MySQL

Screens

Payment and maps integrations.

Decisions & challenges

The server owns the money

Totals, delivery fees and payment status are always calculated and confirmed on the server; payment webhooks are re-verified with the gateway before an order is marked paid.

Orders reach the vendor only when ready

Cash orders are released immediately, while online orders stay hidden from the vendor until payment is confirmed and are cancelled automatically if unpaid after 30 minutes.

Fair, duplicate-free dispatch

Driver offers are queued with first-in, first-out and round-robin fairness, one active offer per order, and automatic retries every 2 minutes if nobody accepts.

Inventory

Profile

Developer toolkit

  • GitHub

Systems toolkit

System

omar@world01

Client-side command palette. Type help to list commands.

WORLD_01 map

  1. SPAWN // OMAR Spawn Point / About
  2. CRAFTING // STACK Crafting Workshop / Skills
  3. MINE // PROJECTS Project Mine / Projects
  4. LAB // ARCHITECTURE Logic Lab / Architecture
  5. OPS // INFRASTRUCTURE Server Room / Infrastructure
  6. HALL // EXPERIENCE Achievement Hall / Experience
  7. PORTAL // CONTACT Portal / Contact