Case study
Where the bus actually is, without anybody making a phone call
Live vehicle tracking, route adherence and arrival alerts for parents — on a platform built from the first week to be handed over, which is exactly what happened to it.
3 min read
A school runs buses. Parents want to know where one is. Schools want to answer that question without somebody picking up a phone every time it is asked.
That is the whole problem, and it is more interesting than it sounds, because the two people asking it want different things from the same data.
One feed, two people waiting on it
The school already had a way to find out where a bus was: call the driver. What it did not have was a way for a parent to find out without calling the school.
Those are genuinely different products on top of one feed. A school administrator wants fleet-shaped information — every route, whether each is being followed, which vehicle is where. A parent wants one number: when. Build them against separate sources and eventually the screen and the street disagree, which is worse than having neither.
What was delivered
Live vehicle tracking and route adherence
Position, and whether that position is where the route says it should be.
Arrival and departure alerts to parents
The answer pushed rather than polled — a parent should not have to open anything to find out that the bus has left.
Administration for schools, routes and vehicles
Because a transport system whose routes can only be changed by its developers is a transport system that gets abandoned in September.
A clean handover into the client's own repositories
Which is where it lives now.
- Web platform
- Mobile app
- Backend
The handover was a design constraint, not an ending
This platform was built from the first week to be handed over, and it was — into the client's own repositories, running.
That is a different engineering problem from one you expect to keep. It rules out the shortcuts that only work while the people who took them are still around: undocumented deploys, environment configuration that lives in somebody's terminal history, a data model whose reasoning was never written down. None of those show up in a demo, and all of them show up eight weeks after a team changes.
Why this client is not named
It is not named because we do not have permission to name it, and the sector is what identifies the entry instead. There is no story here about confidentiality — the work is the same work whether or not a logo sits above it.
Start here
Tell us what you are building
Or what is breaking, or what has to go faster. You will get a straight answer from an engineer who would do the work.