Case Study · Sept 2026
For hire

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.

ClientUs (for Ashgate Hospice)
RoleDesign, build and driving
highlandhackney.com
Our wrapped 2010 London taxi, in taxi yellow with chequered flags and sponsor logos
miles
950
days
5
stops
71/71
raised
£2,758
Summary

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.

Part 1 · The Rally

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.

The three of us with a member of the Ashgate team, in front of the hospice with the cab before it was wrapped
Visiting Ashgate Hospice, before the wrap
The Vehicle

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
Pre-wrap, roof cam
Bonnet up on the taxi on a residential street in Worksop
Breakdown #1, Worksop
The black taxi parked outside CJ Signs, ready to be wrapped
Ready to be wrapped
Launch-era Instagram slide in yellow: "We've bought a taxi."Launch-era Instagram slide: 323,403 miles on the clock, 1,000 miles still to drive, £1,500 maximum spend on the car

The launch posts, back in the spring. Even these were generated by the site itself, so they always matched it.

The Route Card

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.

  1. Day 1Thu 17 Sep
    Departure DayChesterfield → Winnats Pass → Settle → Hawes → Tan Hill Inn → Kendal
    Done · 13/13
  2. Day 2Fri 18 Sep
    The Lakes & BeyondWindermere → Wrynose, Hardknott & Honister passes → Gretna Green → Glasgow
    Done · 13/13
  3. Day 3Sat 19 Sep
    Into the HighlandsLoch Lomond → the Skyfall road through Glencoe → Loch Ness → Aviemore
    Done · 20/20
  4. Day 4Sun 20 Sep
    Scotland's FinestBraemar → Wallace Monument → Falkirk Wheel → The Kelpies → Edinburgh
    Done · 11/11
  5. Day 5Mon 21 Sep
    The Final StretchBamburgh → Angel of the North → Saltburn → Staithes → Whitby
    Done · 14/14
The wrapped taxi parked below Winnats Pass in the Peak DistrictDay 1
Winnats Pass
The taxi with its doors open in front of the Ribblehead ViaductDay 1
Ribblehead Viaduct
The three of us in fancy dress outside the Tan Hill InnDay 1
Tan Hill Inn, in fancy dress
The team dressed as Romans at Hardknott Roman FortDay 2
Hardknott Roman Fort, as Romans
A horse-drawn wedding carriage at Gretna Green, with one of the team in a wedding dressDay 2
Gretna Green wedding dress challenge
The taxi parked outside Ibrox Stadium in GlasgowDay 2
Ibrox, car included
The taxi beside the Maid of the Loch paddle steamer on Loch LomondDay 3
Maid of the Loch
A rainbow over Rannoch Moor, seen from the taxi windowDay 3
Rannoch Moor
One of the team wading into Loch Lochy for the cold water swimDay 3
Loch Lochy wild swim
One of the team in a Grand Prix trophy costume on the Highlands pub crawlDay 3
Highlands Grand Prix pub crawl
Team selfie on the Glenshee chairliftDay 4
Glenshee chairlift
Selfie in front of the Kelpies sculpturesDay 4
The Kelpies
The taxi on the road below Bamburgh CastleDay 5
Bamburgh Castle
Two of the team at the foot of the Angel of the NorthDay 5
Angel of the North
The taxi parked in front of the HMS Endeavour replica in WhitbyDay 5
HMS Endeavour, Whitby
The rally convoy lined up on the road into Whitby, seen from the taxiDay 5
The convoy into Whitby

Scroll the roll · all from the site's journey log

Part 2 · The Website

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.

highlandhackney.com
The highlandhackney.com hero: HIGHLAND HACKNEY in big white type, a 'not for hire' plate and a 3D model of the wrapped cab

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
One placeStops
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 Route Card
The Route Card: five days listed with their routes, each marked Done with all stops complete
Where we've been
The journey map: a dark map of Britain with the driven route in yellow from Chesterfield up through Scotland and back down to Whitby, dotted with photo markers

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.

Journey Updates
The journey log: a trip rail with a tab per day above a grid of challenge photos from Whitby and Saltburn, each captioned with its points and time
Live dashboard

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 live dashboard: a dark map of the North Yorkshire coast with the taxi marker at Whitby, the 71/71 stops, £2,758 fare and clock readouts, and a feed of the latest photos from the cab
The Fare section: a taximeter reading £2,757 with an amber segmented progress bar, 92% funded against a £3,000 target, 77 fares taken

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 rest of the site

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.

Printed tip-up seat artwork: HIGHLAND HACKNEY with a map of the route from Chesterfield to WhitbyPrinted tip-up seat artwork: a sponsor thank-you board with logos and a QR code
Part 3 · The Team App

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.

Road bookQuick updatesSocial posts
The team app on a phone at the end of day 1: all 14 stops done and a 'Day 1 Complete! All stops done. Smashed it.' card

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.

  1. 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".

  2. 02

    Coming Up

    The next three stops, each with its own navigation buttons.

  3. 03

    Who's Driving

    That day's three stints, drivers and miles, balanced so nobody got all the motorway.

  4. 04

    Weather

    A forecast for the start, middle and end of the day's route, so we knew what we were driving into.

  5. 05

    Glovebox

    Breakdown, insurance and emergency numbers as tap-to-call links.

  6. 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

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.

One post, three formatsThe 30-day countdown
Square · 1080 × 1080
Story · 1080 × 1920
Landscape · 1920 × 1080
The sponsor posts zoom into that sponsor's logo on the cab's actual wrap, so every sponsor got their own moment.
The total counts up to the latest figure from JustGiving.
Yellow sponsor thank-you post for CJ SignsYellow sponsor thank-you post for Apogee CreativeYellow sponsor thank-you post for PLP Lift TrucksYellow sponsor thank-you post for Pure Definition

Sponsor thank-you posts. We still posted everything ourselves, the app just did the design work.

Designed for the road

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.

The printed day 3 road book: the driving rota for Luke, Steve and Jonny, and a numbered list of stops with coordinates, points and tick boxes
What I'd do differently

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.

Results

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.

Whitby · the final night

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."
Ashgate Hospice
"You are utterly bonkers 😂 but I support the cause. Great achievement! I can't believe it didn't break down."
A donor, on the JustGiving page
Tech

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)
For hire

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.