Kekeh Mac

Engagement
Full build
Stage
Startup
What I built
Driver app · Passenger app · API · Admin · Real-time dispatch
Status
Pilot
The Kekeh Mac passenger app tracking a driver on the way on a map of Freetown
The Kekeh Mac driver app heading to a pickup with distance, ETA and payout
The Kekeh Mac passenger home screen with wallet balance and ride, delivery, car pool and cargo options
The Kekeh Mac passenger app tracking a driver on the way on a map of Freetown
The Kekeh Mac driver app heading to a pickup with distance, ETA and payout

Story

Kekeh Mac is a ride-hailing and delivery platform for Freetown, Sierra Leone. It is in a pilot, limited release. I led the build, from the first schema to the apps, with two other developers contributing smaller pieces.

The goal

Give Freetown one platform for rides, deliveries and shared trips, and give its drivers the financial tools they rarely get.

The driver app home screen while online and ready for jobs The driver app wallet screen The passenger app trip complete screen

Real-time dispatch

Drivers connect over Socket.IO and push their location into a Redis geospatial index. When a passenger requests a ride, the API finds nearby drivers from that index and offers the job. A Redis lock makes sure only one driver can accept it.

Carpool and intercity trips needed a different model. Matching a rider's pickup and dropoff to a trip's two endpoints missed everyone in the middle of a route, such as a town the driver passes straight through. I changed search to measure against the line the trip actually travels, so riders along the corridor now see it.

Two apps, one platform

There are two Expo apps, one for drivers and one for passengers, plus a React admin panel for operations staff. All of them talk to a single NestJS API on PostgreSQL. The apps share design, translation and API-client packages from one Turborepo monorepo, so a change to a screen or an endpoint lands everywhere together.

Money for drivers

Each driver has a wallet that records every earning, commission and payout. On top of it sit savings goals, micro-loans and advances, and insurance. The platform funds the loans and insurance, and the commission rate is a setting, not a number in the code. Money moves in and out through Monime, a mobile money provider. Every movement is a ledger entry, so any balance can be traced to the events behind it.

Built for Freetown

Safety features include an SOS screen, emergency contacts who are alerted over WhatsApp, and trip-share links a passenger can send to anyone. Booking also works through a WhatsApp assistant. The apps are set up for translation, and Krio is the next language, though that copy is still to come.

Stack

TypeScript throughout: Expo and React Native, NestJS, React with TanStack, PostgreSQL with Drizzle, Redis, Socket.IO and Graphile Worker. It runs on DigitalOcean App Platform with managed Postgres and Valkey.