Work

Spot Cabs

A custom ride hailing app built to reduce platform commissions, keep pricing competitive, and stay reliable at scale.

PlatformiOS & Android
StackReact Native, Node.js, Redis
TypeRide-Hailing Platform

Overview

Spot Cabs is a ride hailing application with the core features users expect: booking and scheduling, in-app payments, real-time driver location, ETA calculation, discounts, ratings, loyalty points, and fleet management.

The Proposal

A fleet owner wanted an in-house alternative to apps like Bolt and Uber to avoid heavy commission fees. Removing commissions allowed lower prices while keeping healthy margins for drivers and fleet managers, making the product viable with marketing and partnerships (hotels, restaurants, and other tourist services).

Because the client's drivers had years of experience using the mainstream platforms, they also brought clear requirements and a practical view of what needed improvement. We kicked off with discovery meetings, prioritized milestones, and aligned design and development around delivery timelines.

System Architecture

Early backend planning highlighted two high-complexity areas: customer-driver matching during bookings, and real-time trip functionality.

Figure 1: Driver updating current position in the backend
Challenge

Driver Matching at Scale

The matching flow needs to find the nearest available driver whose vehicle class meets the requested ride type. A naive approach stores driver latitude/longitude in the main database and checks every available driver using distance calculations.

  • Driver positions update multiple times per second, overloading PostgreSQL with constant writes.
  • Checking every driver wastes computation and adds latency.
  • Most candidates are too far away but still get evaluated.
Solution

Redis + Geo Indexing

A Redis cluster stores live driver positions. Drivers update their location via an Express API, which writes to Redis and triggers updates to a geo index based on a geohash tree.

This reduces database pressure, avoids scanning irrelevant drivers, and keeps matching responsive as the fleet scales.

Geohash Tree Matching

Geohash encodes latitude/longitude into a short alphanumeric string useful for compact storage, spatial indexing, and proximity queries. Each driver's location is encoded to a geohash, and a tree structure is built where each character represents a progressively smaller area.

On booking, the customer's geohash searches drivers in the most specific node first. If none are found, the search expands to broader prefixes before running Haversine distance checks. See geohash.softeng.co for a visual explainer.

Figure 2: Example of how Geohash works
Figure 3: Geohash tree example
Challenge

Real-time Trip Functionality

Real-time trips introduce many operational edge-cases: unstable connectivity, cancellation rules and fees, pricing and ETA accuracy, background driver tracking, route rendering, and dispatching the next job as a trip nears completion.

Solution

React Native + WebSockets + Maps

Mobile apps built with Expo/React Native include background location updates and network-state listeners. A WebSocket cluster powers live trip sessions with low-latency events. Google Maps APIs handle routing, ETA, and place search.

Additional Features

After the first milestones, internal testing feedback drove additional features.

Support Chat

Real-time communication between support agents and riders/drivers, reusing existing WebSocket infrastructure.

Scheduled Rides

Bookings stored with cron jobs on a scheduler server, triggering the same trip-start pipeline at the selected time.

Ratings & Penalties

Post-trip ratings update driver scores. Poor ratings feed into a penalty system affecting driver profit.

Final Product

The delivered system included two mobile applications plus a suite of connected web dashboards.

Customer App

SMS login, card/cash booking, map-based pickup selection, vehicle classes, ETA + pricing, route display, real-time trip updates, cancellations, push notifications, promotions, trip history, and favorites.

Driver App

Managed login, vehicle selection, online/offline status, background location, navigation/ETA, profile, ratings + penalties, and earnings statistics.

Admin Dashboard

Manage fleets/drivers/classes, view bookings, and review business metrics.

Fleet Manager

Manage vehicles/drivers, bookings, and statistics for fleet operations.

Support Dashboard

Live chat with customers and drivers, plus access to historical chat logs.