Highland
Hackney
A live website for our charity rally team, and the simple app we ran the whole trip from. Three mates, a 2010 London taxi with 323,403 miles on the clock, and 950 miles through the Lakes and the Highlands for Ashgate Hospice.

- miles
- 950
- days
- 5
- stops
- 71/71
- raised
- £2,758
One site, updated from the road
In September 2026, my mates Jonny, Luke and I drove a 2010 London taxi 950 miles from Chesterfield to Whitby on the Bangers & Cash Rally, via the Yorkshire Dales, the Lake District and the Scottish Highlands, raising money for Ashgate Hospice.
I built highlandhackney.com to go with it. It's the team's website, but it also became the rally's live record. Every stop we ticked off, every photo we posted and every challenge we completed appeared on the site as we went, on the map, the route and the journey log, without anyone having to update anything twice.
Behind it is a deliberately simple app that we ran the whole trip from on our phones. It told us where to go next, kept track of the challenges, put our photos on the site and turned the site's own data into ready-to-post social media content.
We raised £2,758 from 77 donations, beating our £2,500 target, and the cab made it all the way without breaking down.
A black cab, 950 miles off its patch
Bangers & Cash
Bangers & Cash is a charity rally for up to 45 teams in old, decorated cars. The 2026 "Lakes & Highlands Edition" ran over five days with challenges at every stop, scored on photo evidence: team selfies with the car in shot, wild swims, local food, and extra points for fancy dress.
I first saw it in 2023 on another team's Instagram and have wanted to do it ever since. When the timing finally worked out, I roped in Jonny (a mate since school, about 24 years ago) and Luke (about 14 years, since we worked together).
Ashgate Hospice
We're all from the Sheffield area, so we picked our local hospice. Ashgate cares for people across North Derbyshire with life-limiting illnesses, and gets less than a third of its funding from the NHS. The rest has to be raised every year.
Before the rally, they invited us in to see the work they do first-hand, which made it all feel a lot more real.

One careful owner
We bought the car in February: a 2010 LTI TX4 London taxi with 323,403 miles on the clock. It had one previous owner, an older cabbie in Manchester who had to sell it when it fell foul of the emissions rules.
It broke down in Worksop before we'd even set off, which did wonders for our confidence. We got it sorted, and CJ Signs wrapped it in taxi yellow and chequered flags a couple of weeks before the start, with the sponsors' logos down the sides.
Hence the name: a hackney carriage, in the Highlands.
- Model
- 2010 LTI TX4
- Odometer
- 323,403 mi
- Previous owners
- 1 (Manchester)
- 0-60 mph
- Eventually




The launch posts, back in the spring. Even these were generated by the site itself, so they always matched it.
Five days, 71 stops, two countries
We ticked off all 71 stops, including every bonus challenge. The cab lost a wheel trim and an indicator bulb along the way, and that was it. Hardknott Pass in a black cab with an automatic gearbox was every bit as tense as it sounds.
- Day 1Thu 17 SepDeparture DayChesterfield → Winnats Pass → Settle → Hawes → Tan Hill Inn → KendalDone · 13/13
- Day 2Fri 18 SepThe Lakes & BeyondWindermere → Wrynose, Hardknott & Honister passes → Gretna Green → GlasgowDone · 13/13
- Day 3Sat 19 SepInto the HighlandsLoch Lomond → the Skyfall road through Glencoe → Loch Ness → AviemoreDone · 20/20
- Day 4Sun 20 SepScotland's FinestBraemar → Wallace Monument → Falkirk Wheel → The Kelpies → EdinburghDone · 11/11
- Day 5Mon 21 SepThe Final StretchBamburgh → Angel of the North → Saltburn → Staithes → WhitbyDone · 14/14
Scroll the roll · all from the site's journey log
A website that kept itself up to date
Nobody has time to update a website from a moving car, so the site updates itself from what we were already doing. Ticking off a stop, posting an update or sharing a challenge photo moves the route, the map, the journey log and the live dashboard all at once. There's no separate tracking system, no GPS tracker, and nothing to copy across by hand.
It also had to work for everyone following along at home, on whatever phone or laptop they had, so it's fast, simple to find your way around, and there's always something new to look at.

How it all fits together
Everything we did on the road feeds one place, and every part of the site reads from it.
- The organisers' route mapRead automatically, so there was nothing to copy out by hand
- The team appTick off a stop or a challenge, add a photo, publish
- Quick updatesA message and a photo, placed on the map automatically
- Our group chatSend a photo to the chat and it becomes a post
- JustGivingThe fundraising total and every donation
Challenges
Updates
- Route CardDone, on the road, or still to come
- Journey mapThe route we'd actually driven, up to our last stop
- Journey logPhotos and updates, newest first
- Live dashboardMade for leaving on the TV at home
- The FareThe fundraising total, shown as a taximeter
The route comes from the organisers' map
The organisers kept the official route in a shared Google map. Rather than copying it out by hand and keeping two versions in step, the site reads it directly: every day, every stop, every challenge and its points, and the actual roads in between.
It's careful about it, too. It never touches a stop we've already completed, and it swaps the organisers' placeholder overnight towns for where we were actually staying, without ever showing those on the public site. Every time I updated the site it checked the route again, so if the organisers changed anything, the site followed.


The map
The map is custom, styled to match the taxi. The planned route is a dashed line, and the route we'd actually driven is drawn over it in solid yellow, following the real roads up to the last stop we ticked off. Every stop, update and challenge photo gets a marker you can tap to see what we were up to.
The cab's position comes from what we'd actually done, not a live GPS tracker. That meant it still worked on patchy Highland signal, and the site never gave away where three blokes and a taxi were parked for the night.
The journey log
Updates and challenge photos come together in one feed, newest first and grouped by day. Tabs along the top jump to any day, each with a little progress bar showing how many stops we'd done, and more loads in as you scroll.
Empty spaces are hatched like unexposed film, which is the kind of detail nobody asked for and I enjoyed far too much.

Mission control, for the TV at home
This is a full-screen dashboard for family and friends to leave running on the TV at home. It checks for news every 30 seconds, and when something new comes in from the cab, the roof light flashes and the photo takes over the screen. It only reacts to genuinely new posts, so it never replays anything it's already shown.


The Fare
Fundraising is shown as a taximeter, with a glowing total, a progress bar, "Fares taken" and "To go", and every donation printed as a ticket stub underneath. It's connected to our JustGiving page, so the meter ticked up during the rally as people donated.
The small stuff
The cab, in 3D
The top of the site has a 3D model of our actual cab, wrap and all. You can drag it to spin it round.
Sightings
Members of the public can upload photos of the cab. They land in our Telegram chat with approve and reject buttons, so moderating is one tap.
A QR code on the cab
Anyone scanning it lands on the site, and we get a ping in our group chat. A stranger scanning the cab in a car park showed up in our chat as it happened.
Sponsors that switch themselves
The section started as a "Tariff of Fares" pricing card, and turned into a thank-you over a photo of the wrapped cab once the wrap went on.
A time machine
I could preview the whole site as it would look at any moment of the rally, so checking "day 3, mid-afternoon" didn't mean waiting for it.
The why, as well as the what
Ashgate's story, a Sky News feature filmed inside the hospice, and the local press coverage we got along the way.
A road book, not a template
The whole site is designed like a rally road book. Black and taxi yellow for anything to do with the cab, with amber for the taximeter. A cool Highland grey-green for the road, a headline typeface with London Transport roots, and cab language everywhere: Route Card, The Fare, Fares Taken, Passing Place, Last Seen.
The site's route data even ended up printed inside the cab. The rear tip-up seats got a route map drawn from the same data the website uses, and a "Tariff of Fares" sponsor board with a QR code back to the site.


Built for one thumb in a moving car
Behind the website was a simple app that the three of us ran the whole rally from. It had to work one-handed, in a moving car, on bad signal, so it does a few things and does them well.
There was nothing to install from an app store and no second system to keep in sync. The app updates the same information the public site shows, so ticking something off on the phone is publishing it.

The end of day 1, from my phone
The road book
One column, with navigation first because it's what we needed at the wheel.
- 01
Next Stop
Name, points and location, with big buttons that open Google Maps, Apple Maps or Waze straight to it. Then the challenges and "Mark stop complete".
- 02
Coming Up
The next three stops, each with its own navigation buttons.
- 03
Who's Driving
That day's three stints, drivers and miles, balanced so nobody got all the motorway.
- 04
Weather
A forecast for the start, middle and end of the day's route, so we knew what we were driving into.
- 05
Glovebox
Breakdown, insurance and emergency numbers as tap-to-call links.
- 06
Challenges
Upload straight from the camera roll, it saves as it lands. Nothing goes public until someone ticks "Publish to site".
A separate quick-update screen covered everything else: a message and/or a photo for the journey log, placed on the map automatically from the photo or the phone. The organisers' challenge descriptions arrived as rally boilerplate, so the app tidied them into short, readable headlines.
Social posts, made from the site's own data
Keeping sponsors and supporters updated meant a steady stream of Instagram posts, and nobody wanted to open a design app at a service station. So the app makes them from the site's own data. Pick a type (a photo, the route, a single day, the fundraising total, a countdown or the sponsors), pick a format, tweak the headline, and it's ready to post.
Still images download straight to the phone at Instagram quality, and the animated ones come out as proper videos, with the countdown rolling over like a taximeter and the total counting up. They're made in the background, so you can put the phone away and come back to them.




Sponsor thank-you posts. We still posted everything ourselves, the app just did the design work.
Built for bumpy roads and no signal
- Big, full-width buttons that give a little buzz on every tap.
- Buttons lock while they're working, so a bump in the road can't send something twice.
- Undo instead of "Are you sure?" pop-ups.
- All three phones stay in sync on their own, and pause when the screen is off to save battery.
- Sign in once with a link sent by email, and it remembers you.
And for no signal at all, the answer was paper. I could print an A4 road book for each day, with the driving rota, stops, coordinates and tick boxes.
A separate admin area handled the desk jobs, like setting up stops, moderating photos and bulk fixes. The app was for the road.

I also built a feature that reordered the remaining stops into the quickest route by road. Mid-rally, it shuffled them into an order that made sense to a computer and none to us, so I switched back to the organisers' order. Sometimes the people who planned the route know best.
Meter's stopped
- £2,758
- raised from 77 donations
- Beat the £2,500 target, then went after a £3,000 stretch. Around £3,250 with Gift Aid.
- 71/71
- stops completed
- Every challenge, including every bonus, across five days.
- 0
- breakdowns
- One lost wheel trim and one indicator bulb. That was it.
The rally as a whole raised over £41,000.
The Spirit of Bangers and Cash Award
At the awards on the final night, the organisers created a brand-new award just for us, for the effort that went into the website, our social media posts, and being good fun on the rally itself. We went for a laugh and to raise money for Ashgate, so that one meant a lot.
"We are so proud of your achievement. From all of us at Ashgate, thank you for everything you have done! We have loved seeing all the challenges you have been doing."
"You are utterly bonkers 😂 but I support the cause. Great achievement! I can't believe it didn't break down."
Under the bonnet
For the technical readers: a Laravel and Livewire app with no JavaScript framework, built between February and September across about 513 commits and 124 merged pull requests, with around 385 automated tests.
- Laravel 13
- Livewire 4
- Filament 5
- Pest
- Alpine.js
- Tailwind CSS 4
- MapLibre GL
- model-viewer
- Browsershot
- Puppeteer
- ffmpeg
- Open-Meteo
- JustGiving API
- Telegram Bot API
- Google My Maps (KML)
Need something bespoke built?
Whether it's a site for an event, a tool your team can run from their phones, or a problem that off-the-shelf software doesn't quite solve, it's the kind of work I enjoy most. Tell me what you're trying to do and I'll let you know how I'd approach it.















