Skip to content
All work

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
Belad Al Sham home page: the headline 'Bus from the UAE to Riyadh, Dammam & Oman' beside a trip search card with from, to, date and passenger fields
The home page on a phone, with the headline and boarding cities above the 'Book a seat' search card

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
Dubai to Riyadh results: a nearby-dates strip, departure-time filters and sort options, and trip cards with the pickup report time, departure and arrival, bag allowance and a from-price
Live search with nearby dates, time-of-day filters and a report time for each pickup point.
The Arabic home page, mirrored right to left: the headline on the right and the search card on the left
The Arabic home page, with a full right-to-left layout.
Route page 'Dubai to Riyadh by Bus' over a photo of the Riyadh skyline at night, with a short description, a Book online button and the office phone number
One of the bilingual route pages built for search, with structured data and hreflang.
Visa-change page: 'UAE visa change by bus through Al Buraimi, Oman' on a navy band, with Apply online, WhatsApp us and Visit an office buttons
The all-inclusive Oman visa-change package: apply online, on WhatsApp or at an office.
Trip results on a phone: nearby-date chips, time filters and a trip card with seats left, pickup times, bag allowance and a Select button
Search results on a phone, with seats left and pickup times.
Checkout step 1 of 2 on a phone: the trip summary, a 10-minute countdown and an empty passenger details form
Checkout step 1 of 2: passenger details inside a 10-minute session.

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)
Operations center: tiles for departures, passengers, boarded, unassigned departures, bookings today and pending holds, above a departure board with each trip's time, passengers, boarding progress, bus and driver, border readiness and live signal
Operations center: the day's departure board with boarding progress, bus and driver, and border readiness.Data anonymized
Departures hub for one day: a date picker with departure, passenger and boarded counts, and route cards for Oman, Riyadh and Dammam listing each coach with its pickup times, bookings, Open and Manifest buttons, and an Open boarding button
Departures hub: every coach of the day, with boarding and the manifest one click away.Data anonymized
Finance overview: tiles for revenue today, revenue and expenses this month and net, a 30-day revenue trend, a payment-channel donut and revenue by office, with every amount replaced
Finance overview: revenue, expenses, payment-channel mix and sales by office. All amounts are replaced.Data anonymized

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
Agency bookings under a demo-mode banner: search, Check schedule, Hold seats, Open returns and Create booking buttons, filters, and a table of routes, travel dates, prices, passenger counts, who booked and status
Agency bookings with holds, open returns and a schedule check. Built-in demo mode, synthetic data.Demo data
Passenger book: tiles for passengers on file, visas expiring within 90 days and expired visas, a document radar listing the next expiry, and an empty saved-groups panel
Passenger book with a passport and visa expiry radar. Built-in demo mode, synthetic data.Demo data
Commission ledger: unsettled balance, recent entries and statements tiles, an Export CSV button and a table of sales by date, channel and booking with gross, commission, net and statement status
Commission ledger: every sale, refund and adjustment, with statements and CSV export. Built-in demo mode, synthetic data.Demo data
Partner portal sign-in: a navy panel listing booking for clients, a shared wallet, the team and co-branding, beside an email-code form and a Continue with Google button
Agency sign-in with an emailed code or Google.
Public partner programme page: the headline 'Sell our seats from your desk. Put your coaches on our rails.' with Apply and Sign in buttons, and a navy card listing what the partner portal includes
The public partner programme page for agencies and coach operators.

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
App Store artwork 'Every stop, up front.': trip details for Dubai to Riyadh with departure and arrival times, stops and the fare (demo data)
Trip details and fare before checkout. App Store artwork, demo data.
App Store artwork 'Booked in seconds.': a You're booked confirmation with the Dubai to Riyadh ticket and its booking reference, an Add to Google Wallet button and View boarding pass (demo data)
Booking confirmed, with the e-ticket sent by email. App Store artwork, demo data.
App Store artwork 'Your language, your way.': dark-mode settings for language, region, currency, appearance and push notifications
Settings: English or Arabic, region, currency, light or dark. App Store artwork.

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
Platform v1 passenger site: the headline 'Travel in Comfort Across the Gulf' inside a large sunrise arch, with Dubai and Muscat time pins
Passenger site home page. Platform v1, April 2026, fictional fixture data.
Platform v1 partner portal in a dark navy and gold theme: bookings, wallet balance and pending invoice tiles above a recent bookings table
Partner portal overview with the company wallet and recent bookings. Platform v1, April 2026, fictional fixture data.Data anonymized
Platform v1 co-branded invoice for a demo partner: line items per route at partner rates, VAT, the total and a Download PDF button
Co-branded VAT invoice, generated automatically. Platform v1, April 2026, fictional fixture data.Data anonymized
Platform v1 spend reports: total bookings, total spend and average per booking, a daily spending bar chart and a spend-by-route donut
Spend reports by day and by route. Platform v1, April 2026, fictional fixture data.Data anonymized
Platform v1 staff portal check-in: today's trips with check-in progress, and one trip expanded into its manifest with each passenger's boarding time and payment method
Branch check-in with a manifest for each trip. Platform v1, April 2026, fictional fixture data.Data anonymized
Platform v1 Today's Trips: tiles for trips, bookings, boarded and remaining, and four trip cards with status, coach, driver and a seat-fill bar
Today's trips with fill and boarding progress. Platform v1, April 2026, fictional fixture data.Data anonymized
Platform v1 passenger account: a greeting above cards for wallet balance, loyalty points, Silver member tier and next departure, then upcoming trips
Passenger account with wallet, loyalty tiers and upcoming trips. Platform v1, April 2026, fictional fixture data.Data anonymized
Platform v1 ticket on a phone: 'You're all set' above a Dubai to Muscat ticket with date, time, passenger details, the amount paid and a boarding QR code
Guest checkout ticket with a boarding QR code. Platform v1, April 2026, fictional fixture data.Data anonymized

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
Brand book cover: 'A premium passage between worlds.' in a large serif, above a short paragraph on coach travel from the UAE to Oman and Saudi Arabia
Brand book cover, April 2026.
The Belad Al Sham mark, Arabic calligraphy under a sunrise arc, shown on cream, orange, dark navy and white, with notes on its symbolism and use
The mark on four backgrounds, with its symbolism and usage rules.
Palette page 'Two skies, one road.': a row of blues with a light neutral and a row of warm tones ending in a dawn gradient, each swatch with its value and role
Eight-colour palette, 'Two skies, one road', with a role for each colour.
Typography page 'A voice for two languages.': specimens for the display, editorial, body, Arabic and mono typefaces with their weights and uses
Bilingual type system: Clash Display, Fraunces, Satoshi, Cairo and JetBrains Mono.
Go-to-market toolkit cover: 'The road from here to everywhere we go.' set in English and Arabic under the Belad Al Sham Passenger Transport name
Go-to-market toolkit: letterhead, onboarding, email and social templates in two languages.

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