Inspiration

I run a small dispatch business in Lagos with two riders. Every day I'd send them out and then spend hours chasing WhatsApp updates: "Where are you now?" "Have you reached?" I couldn't tell whether a rider was on the way, stuck in traffic or detouring off the route. I wanted the kind of live map Bolt gives passengers, but for my own riders, so I could stop guessing and start knowing.

What it does

Rider Watch is a live dispatch dashboard for small rider teams.

  • The owner signs in and adds recipients, picking a sample address or dropping a pin straight on the map.
  • Each delivery is automatically dealt to a rider, shown as a small R1 or R2 tag, and a Shuffle button re-balances unfinished deliveries.
  • The owner shares a tracking link with each rider. No rider login: the rider opens the link, reads how location sharing works and taps Start sharing. They can stop anytime.
  • Riders appear as glowing, named dots moving on a dark map in real time, with fading trails.
  • When the assigned rider gets within 50 metres of a recipient, the delivery is marked Arrived and the dashboard plays a chime. That's my cue to call the recipient on WhatsApp.
  • After the handover, I tick the parcel as Received, then clear it from the list.
  • If a rider goes quiet, their status switches to Not Reporting.

How we built it

Rider Watch runs on Node.js with Express for the server and session login, and WebSockets to push rider positions, assignments and arrivals to the dashboard instantly. The map uses Leaflet with a dark, World Monitor-inspired style. Riders' phones send positions through the browser's Geolocation API, and the arrival chime is generated in the browser with no audio file. Data is saved in a simple JSON store so the state survives a restart.

To test with a real phone without deploying anything, I used a temporary Cloudflare HTTPS tunnel (npm run share). I also built a simulator and a one-click Demo button that plays both riders along routes across Lagos, from Victoria Island to Lekki and Ikeja to Yaba, so the full flow can be shown anytime.

I built it with AI as my pair programmer: first a scope and product requirements doc, then a technical spec, then three working slices, each one tested by hand before moving on.

Challenges we ran into

  • Phone location only works over HTTPS, so testing on a real phone needed a secure tunnel to my laptop.
  • In share mode, the login cookie was set to HTTPS-only, so signing in on localhost silently threw the session away and bounced me back to the login page. Tracking that loop down took some digging.
  • GPS accuracy made arrivals hard to repeat on foot, so the simulator became essential for testing edge cases.
  • Making sure only the assigned rider completes a delivery, so a rider passing someone else's stop doesn't trigger a false arrival.
  • Fair assignment: a plain coin toss could give one rider everything, so deliveries go to whichever rider has the fewest still out.
  • I wanted nearby address suggestions from NIPOST, but there's no official public API yet, so I chose to wait for proper access rather than scrape their site.

Accomplishments that we're proud of

  • It solves a real problem in my own business, and I tested it with a real phone moving on a real map.
  • Rider consent is built in: tracking never starts until the rider taps Start sharing.
  • The full loop works end to end: assign, track, arrive, alert, confirm.
  • The dashboard looks the way I imagined, dark, map-first and alive.
  • Anyone can see it working in seconds with the Demo button, no second phone needed.

What we learned

  • How real-time apps work: pushing updates over WebSockets instead of refreshing the page.
  • Working with maps and location, including calculating distance between two GPS points and why HTTPS matters for browser permissions.
  • How cookies and sessions behave differently over HTTP and HTTPS.
  • Planning before coding: writing a clear scope, cutting features on purpose and shipping in small, testable slices.
  • How to use AI as a collaborator while still understanding and owning every part of the code.

What's next for Rider Watch

  • Off-route detection, the problem that started it all.
  • Support for more than two riders as the business grows.
  • Delivery history and simple reports.
  • Sending tracking links automatically by SMS or WhatsApp.
  • Route lines between each rider and their next stop, plus shift-based tracking.
  • NIPOST address suggestions once official API access is available.
  • Proper hosting and multiple owner accounts, so other small dispatch businesses can use it too.
Share this project:

Updates

Submission history