Corporate mobility ServX24

A working cab app running on their real backend, 1 day after the project started.

An Ola-style cab app with live map tracking, built end to end in one pass

Client
ServX24 · fleet and mobility ERP
App
Employee + driver, iOS · Android · web · Try the prototype ↗
My role
Built the mobile app (89 of 97 commits)
Status
Built

Context

ServX24 runs an ERP for vehicle fleets: bookings, vehicles, drivers and billing for corporate clients. Their clients wanted an Ola-style app for employee transport: employees book a cab to and from the office, drivers receive and run the trip, and the company is billed at month end.

The problem

The app had to sit on top of a backend and web ERP that already existed, with two roles in one app, background location from the driver's phone, and a design the founders expected to see exactly as drawn. Built the usual way, that's weeks of screens, wiring and back-and-forth before anyone can tap through it.

The app, screen by screen

Sign in with the mobile number your company registered
Enter the 6-digit code
Employee home: the live trip, where to next, and upcoming rides
Book a ride: pickup, drop, now or scheduled, and the vehicle
Live tracking: the driver on the map, ETA, Share trip and SOS
Share trip details with someone
A scheduled trip waiting for a driver
My trips: upcoming, completed and cancelled
Trip completed: distance, fare, and a driver rating
Driver home: online status, today's trips and the next pickup
Driver at pickup: the passenger's start code and an odometer photo
Driver's trip in progress, sharing location, then closing the trip
Profile: trips, spend, safety and appearance
Emergency contacts for SOS
Safety: exactly what SOS does, and what it doesn't yet

All 15 screens of the employee and driver apps, from the design references the app is built and tested against. Names and numbers are sample data. Click through the live prototype ↗

What I built

Designs and a design system first

15 screens drawn as phone-size artboards, plus a design system: colours, type, spacing and components, in light and dark. Dark is a real theme, because drivers work at night.

One app, two roles

Sign in with an OTP and the app opens as an employee or a driver. Employees book, track and share trips; drivers accept, start with the rider's code and end the trip.

Live map tracking

The driver's phone sends GPS in the background during a trip, and the employee watches the cab move on the map.

Safety built in

An SOS screen, up to three emergency contacts and a share-my-trip link.

Wired to the real backend

Typed API contracts shared with ServX24's backend and web ERP, so the app, the API and the web all agree on what a booking is.

Builds and releases

Development, preview and production builds on EAS, with the production build set to submit to the stores.

The hard part

01The map screen's panel never appeared on a real phone

The booking panel on the home screen rendered in the simulator but not on a device: the whole screen stayed map. The popular bottom-sheet library behind it has open bugs where it never draws when the phone's Reduce Motion setting is on, and incomplete support for the animation library this app uses.

02Fixed by owning it instead of swapping libraries

I replaced it with a small panel built on the gesture and animation code the app already used. It draws at its resting height from the first frame, so there's no opening animation for a phone setting to break, and only the handle drags, so the list inside scrolls normally.

03The same habit, a second time

Granting location permission could leave the app stuck, because the phone's first GPS fix has no timeout and can hang indoors. Every location request is now capped at 10 seconds.

How quality is checked

01Measured against the design

On every push, CI renders all 15 screens and measures each one pixel by pixel against its design, flagging anything more than 2% off. It reports rather than blocks while the designs are still changing: in the latest CI run (22 October 2026), 3 of the 15 screens were within 2% and the other 12 were flagged for fixes.

02No made-up values

Every colour, size and spacing comes from the design system. A raw hex code or pixel value in a component is treated as a bug.

03Tests on every push

Typecheck, lint and unit tests run in CI on every push.

Result

One day from an empty repo to a working build against the real backend (21 to 22 September 2026). Every feature, including live map tracking, was built end to end in one pass, then measured against the design on every push. I wrote 89 of the app's 97 commits.

Stack

ExpoReact NativeTypeScriptExpo RouterTanStack Queryreact-native-mapsexpo-location (background)JestPlaywright + pixelmatchGitHub ActionsEAS Build
Next step

Start a similar project.

Find out in 48 hours exactly what it takes to get your app approved, live and earning.

Audit fee credited to your build · NDA on request

Launch audit$500
  • A plain-English verdict: keep, fix or rebuild the risky parts
  • Every issue ranked: what could lose you money or users first
  • A backend and review check: data rules, exposed keys, payment webhooks, and Apple's and Google's top rejection reasons
  • A fixed price to get you live
Buy nowGet it free →

Credited to your buildFree · no call needed

Get my launch audit — $500 →