Case study · Own product
Veriride
A personal-safety app for South Africa: know who is driving before you get in.

- Year
- 2026
- Role
- Design · Engineering · Infrastructure
- Status
- See it live
The brief
Getting into a car in South Africa means trusting a plate and a face you have never seen. A metered taxi, a lift from a stranger, a driver whose photo in the app is somebody else. And once the ride is over, the walk from the rank is its own risk.
Veriride answers the first question in seconds: type the plate, and the driver proves who they are with a live photo, then and there. Then it stays with you for the rest of the night.
What we built
An Android app, built in Flutter, with Firebase behind it and a web console for the people who run it.
- The check. A passenger types a plate; the driver answers with a live selfie matched against the verified profile; both sides can check each other. Every check is a record nobody can edit.
- Getting home. Share a walk or a ride with the people expecting you. If the deadline passes, the phone stops moving, or the phone goes quiet, they are told, with where you were last seen.
- Emergency. A button, or a spoken safe word, texts your contacts your location, keeps updating it, and records sound. If an attacker switches the phone off, the server notices the silence and tells your people that too.
- Family. One plan covers four people: check on each other, set an expected-home time, and share the drivers the family already knows.
The hard part
A phone cannot keep a promise about its own silence. Battery, water, signal, or somebody taking it: whatever the app meant to do at the deadline, it does not do. So every deadline lives on the server, and scheduled sweeps watch for the phone going quiet, the walk running late, and the question nobody answered.
The other half is privacy. Location is shared only while something is running, a driver can never look a passenger up, and nothing is sold or used for advertising. Firestore security rules are the product's law, with a test suite that tries to break them on every change.
- Android
- Platform
- 0
- Free checks a month
- 0
- People in a family plan
Stack
- Flutter
- Dart
- Firebase Auth
- Cloud Firestore
- Cloud Functions
- Firebase Cloud Messaging
- RevenueCat
- Next.js
- OpenStreetMap