London Bus Tracker

A simpler way to follow London buses, especially at stops without live arrival boards.

London Bus Tracker is a simpler way to answer the questions that matter while you are waiting: where is the bus, is it actually moving, and do I need to run for it?

It brings live arrivals to London stops that do not have countdown boards, plots where the buses actually are and works out whether you can reach the stop before the doors close.

Why I built it

Many London bus stops do not have a live arrival board. At those that do, a countdown tells you when a bus should arrive but not where it is or what is happening along the route. A prediction of four minutes feels very different when the bus is moving steadily, sitting in traffic or travelling in a bunch with two others.

The app combines the prediction with the vehicle’s reported position. Watching successive updates makes congestion, slow progress and bus bunching much easier to understand than a countdown alone.

It also compares your walking time with the bus’s estimated arrival. The result is a plain-language verdict: you will make it, you need to run, or you should wait for the next one.

Google Maps is designed to plan every kind of journey. I wanted something more direct for the small, repeated decision of catching a London bus: open the app, see the stops around you, tap one and understand the next few buses without building a route first.

What it does

  • Finds nearby stops using the location provided by your browser.
  • Searches for stops by name or stop code.
  • Shows live arrivals with colour-coded countdowns.
  • Plots stops and live vehicle positions on an interactive map.
  • Makes slow-moving traffic and buses travelling together visible on the map.
  • Highlights an approaching bus and refreshes its position every 15 seconds.
  • Lets you select a bus to follow its route and upcoming arrival.
  • Creates shareable links to individual stops.
  • Saves favourite stops to your account for a quicker daily view.

The default map uses Leaflet and OpenStreetMap, which keeps the public version free of per-load map charges. The app also supports an optional Google Maps mode for place search, Street View and walking routes.

How it is built

The interface is a React single-page app designed around a map and a draggable bottom sheet, rather than a desktop timetable squeezed onto a phone. It is hosted from a private Amazon S3 bucket through CloudFront and can be installed to a home screen as a progressive web app.

An API Gateway endpoint fronts a set of AWS Lambda functions. Public routes proxy the Transport for London Unified API, while Amazon Cognito protects personal features such as favourites and feedback. User data lives in a DynamoDB single-table design. The infrastructure is defined in AWS CDK and deployed by GitHub Actions using OpenID Connect, so there are no long-lived AWS credentials in the deployment pipeline.

There are separate development and production environments, automated tests for the front end, backend and infrastructure, and post-deployment smoke tests for the public API.