Cross-border coach transport
Belad Al Sham
Belad Al Sham, a Dubai passenger transport company licensed since 1983, sells coach travel from the UAE to Riyadh, Dammam and Oman. I led the Admix Lab team that built the platform it runs on today: one Next.js codebase for the bilingual booking site, the staff back-office and the partner and operator portals, with a passenger app and a driver app on the App Store and Google Play.
- Client
- Belad Al Sham Passenger Transport Co. LLC
- Year
- 2025–2026
- Role
- Product and engineering lead, Admix Lab
- Status
- Live
- Platforms
- Booking site, Staff dashboard, Partner portal, Passenger app, Driver app


Passengers. Passengers search live departures, book in two steps and receive a QR e-ticket, in English or Arabic.
- Live at beladelsham.com: one codebase runs the public site, the staff back-office and the partner and operator portals
- Passenger app on the App Store and Google Play; Belad Driver on both stores
- 115 data models, 220+ pages, 130+ API routes and 870+ commits since February 2025
- English and Arabic, with full right-to-left layouts on web and mobile
Challenge
Belad Al Sham is a Dubai passenger transport company, licensed since 1983, that sells coach travel from the UAE to Riyadh and Dammam and runs Oman visa-change trips and charters. Every cross-border passenger needs passport and visa details on record, and the UAE ICP manifest must be complete before a coach can leave.
Tickets were sold at branch counters, in WhatsApp chats, from partner agencies' spreadsheets and by other carriers, with no single inventory, ledger or boarding record. The company sells tickets every day, so the replacement had to ship in stages into a running business.
Approach
I rebuilt the operation as one Next.js 16, Prisma and Postgres application on Vercel. The subdomain decides what loads: the bilingual public site, the staff back-office, the agency portal or the operator portal. Every sales channel prices through one fare engine, so the quote and the charge cannot drift. By design, each server action re-reads the user's role from the database.
Around that core the Admix Lab team shipped the Expo passenger app, a driver app that reports trip milestones and GPS, a Channel API and embeddable widget for agencies, and one inbox for WhatsApp, Instagram and Messenger, with a Claude assistant layer that answers from live trips.
The work began in February 2025 with a first Next.js site and a simple company portal. Platform v1 (January to April 2026) then tested the full model as an 8-app monorepo. The June 2026 rebuild is the platform running today, and its roadmap chose to bring v1's proven server code in as libraries.
Impact
The platform is live at beladelsham.com and runs the company's day-to-day operations: online search and checkout, per-passenger QR boarding with an offline scan queue, passport MRZ intake and ICP manifest export, a live fleet map, shared partner wallets with co-branded tickets, operator commission statements, and a shadow-mode VAT 201 and FAF tax ledger.
The passenger app has been on the App Store since 21 August 2026 and is also on Google Play. Belad Driver is on Google Play and, since 9 September 2026, on the App Store.
Since February 2025 the codebase has grown through 870+ commits to 115 data models, 220+ pages, 130+ API routes and 50+ back-office sections, backed by 119 web test files.
Passengers
Booking site
Passengers search live departures, book in two steps and receive a QR e-ticket, in English or Arabic.
- Search with nearby dates, time-of-day filters, sorting, seats-left badges and a report time for each pickup point
- Two-step checkout inside a 10-minute session: card, wallet credit or cash at an office
- Bilingual route pages and travel guides with structured data, hreflang and a sitemap
- Oman visa-change package, charter quotes and a partner programme for agencies and operators






Operations and branch staff
Staff dashboard
The back-office the company runs on: 50+ sections for departures, boarding, counter sales, fleet and finance, with access set by staff role. Names and amounts on these screens are replaced.
- Departures hub: boarding, ticket checks and the manifest on one page, with per-passenger QR scans that queue offline and replay when the connection returns
- Counter bookings with passport MRZ reading and an exact-format UAE ICP manifest export
- Fleet: a live map fed by the driver app, trip replay, maintenance and incidents
- Finance: cash flow, invoices, payment links and refunds, plus a shadow-mode tax ledger that drafts the VAT 201 return and the FTA Audit File (FAF)



Travel agencies and travel desks
Partner portal
Travel agencies sell Belad Al Sham trips from their own desks, with one shared wallet, tickets under their own brand and an API for their own systems. Shown in the portal's built-in demo mode.
- Booking wizard with Excel or CSV passenger paste, saved groups and open returns, paid from one organisation wallet the team shares
- Ticket designer with three A4 layouts, the agency's logo and a live preview, and a QR code for every passenger
- Passenger book with a passport and visa expiry radar, plus a commission ledger with statements
- Channel API for availability, quotes, bookings and cancellations with signed webhooks, and an embeddable widget that shows live trips on the agency's own website





Passengers
Passenger app
The same trips, fares and tickets as the website, in an Expo app on the App Store and Google Play. Store artwork shows demo data.
- Live trip list, booking and checkout on the same backend as the website
- A QR boarding pass for each passenger, an e-ticket and a live-tracking link on travel day
- A Passenger Card wallet, topped up by card, that pays for trips at checkout
- Sign in with an email code, Google, Apple or a WhatsApp or SMS code; English or Arabic, light or dark



Coach drivers
Driver app
Belad Driver turns each trip into one-tap milestones, so the office knows when a coach leaves, reaches each stop, crosses the border and arrives. Store artwork shows a review-sandbox trip.
- Today screen with the assigned route, bus and departure time; driver accounts are issued by dispatch
- One large button for the next milestone: departed, each stop, border reached, border cleared, arrived
- Taps made offline are queued with the time they happened, and the trip's position feeds the office's live fleet map
- Route map with ETA, in English or Arabic with a full right-to-left layout
Passengers, partners and branch staff
Platform v1
Platform v1 was the R&D track from January to April 2026, ending in an 8-app monorepo: four Next.js web apps and four Expo apps on one shared schema. It never launched to customers, but it became the proving ground for the live platform.
- Next.js 16 apps for the passenger site, admin with the central API, partner portal and staff portal; Expo apps for passengers, drivers, staff and admins
- Nine shared packages, including a 59-model Prisma schema, validators, currency logic for AED, OMR and SAR, and seven-language i18n with Arabic RTL
- Partner portal with company wallets, credit limits and auto-generated co-branded VAT invoices, plus branch check-in manifests
- Passport scanning at the counter with Claude Haiku 4.5, escalating to Claude Sonnet 4.5








The client team and its partners
Brand system
A bilingual brand book and go-to-market toolkit I produced in April 2026 alongside Platform v1: how the mark is used, the palette, the type system and the voice.
- Rules for the mark on cream, warm, dark and white backgrounds
- An eight-colour palette, 'Two skies, one road', with a job for each colour
- Paired Latin and Arabic typography for display, editorial, body, Arabic UI and mono text
- Toolkit: letterhead, a client onboarding deck, bilingual email templates, and Instagram posts and stories





Stack
- Next.js 16
- React 19
- TypeScript
- Prisma
- PostgreSQL (Neon)
- Vercel
- Expo SDK 57
- React Native 0.86
- next-intl
- Tailwind CSS 4
- MapLibre GL
- Tesseract.js
Integrations
- Tap Payments
- WhatsApp Cloud API (360dialog)
- Instagram and Messenger (Meta Graph API)
- Anthropic Claude
- Sign in with Apple
- Google Sign-In
- Cloudflare R2
- Sanity
- Google Search Console and IndexNow