Work / JSS Technology

Jeye
Food delivery for Lebanon’s Bekaa region: a customer app, a driver app and an operations dashboard on one backend.
- Role
- Software architect & tech lead · built the backend and both Flutter apps
- Company
- JSS Technology
- Timeline
- Jun 2026 – Present
- Stage
- Launching end of October 2026
- Platforms
- iOS · Android · Admin dashboard
- Team
- JSS Technology client project

- ~4 months
- From first commit to launch
- 3 apps
- Customer, driver and operations, on one backend
- USD & LBP
- Cash on delivery in either currency
- AR & EN
- Arabic and English, right to left included
The problem
Drivers have to keep broadcasting their location while the app is backgrounded and the network is patchy, without flooding the server, and without a driver looking offline just because they switched apps.
Live tracking
How a driver’s position gets from their phone to the operations map and the customer’s order screen, even with the app in the background and a patchy network.
- 01 · Driver app
The phone reports where it is
While the driver is online or on a job, the app keeps sending its position over a Socket.IO connection that reconnects by itself, in the background on both iOS and Android.
A new fix every 20 m moved · heartbeat every 45 s - 02 · Backend
The server keeps only what matters
Each ping is validated and throttled by time and distance. The latest position goes to Redis and the database, and reachability is tracked apart from being online, so a backgrounded phone mid-delivery never looks offline.
At most every 10 s and 25 m · 60 s position expiry · 90 s reachability - 03 · Operations dashboard
Operations see every driver live
Positions stream to each branch’s dashboard and are drawn on a live map with every driver’s load. A background check flags drivers whose position has gone stale.
Map redrawn every 2 s · stale after 8 min - 04 · Customer app
The customer follows their order
Once a driver is assigned, the order screen shows them on the map until delivery. Status changes update the iOS lock screen and Dynamic Island, and a push says when the driver is close.
Refreshes every 15 s · “arriving shortly” within 500 m
Key decisions
- 01
The delivery fee comes from real driving distance plus uphill elevation, priced per region by matching the customer’s location against map boundaries, in USD or LBP, with routes cached so the maps APIs aren’t called twice.
- 02
Background scans flag stuck orders, orders with no driver and uncollected cash, and accepting a delivery runs in a strict database transaction that re-checks the driver’s cash limit, so two taps can never double-accept an order.
Outcome
From first commit to launch in about four months, as tech lead: the backend and both Flutter apps, published on the App Store and Google Play under my name. Arabic and English.
What it does
- Browse restaurants and shops, search by dish or cuisine
- Live order tracking on a map, plus iOS lock-screen and Dynamic Island updates
- Cash on delivery in USD or LBP
- Delivery or pickup, saved addresses, coupons and loyalty coins
- 4-digit delivery code handed from customer to driver
- Driver app with timed offers that show the payout first
- Driver wallet for cash held, debts and payouts
- Voice calls between operations and drivers
Built with
- Flutter
- Dart
- TypeScript
- Node.js
- Express
- PostgreSQL
- PostGIS
- Prisma
- Redis
- BullMQ
- Socket.IO
- Firebase
- Google Maps
- GitHub Actions
A closer look
Customer app
Browse restaurants across the Bekaa, order in a few taps, pay cash in USD or LBP, and follow the driver live on the map.
Driver app
Go online, accept timed offers that show the payout first, deliver step by step, and keep track of cash and earnings.









