/// Case study · MyFootballFacts

MyFootballFacts: a football archive moved onto a data platform without a big bang.

A long-running football stats site, rebuilt in Laravel one section at a time, until WordPress could be switched off.

  • Migration
  • Laravel
  • Sports data
  • Performance
The MyFootballFacts home page
myfootballfacts.com, served entirely by the Laravel platform since 19 October 2026.

Where it started

MyFootballFacts is a long-running football stats and history site. In September 2026 it was a WordPress site with more than 9,000 posts, on a host outside our estate. The first step was to bring it onto our own servers behind the Bunny CDN, which was completed on 15 September, and to move it from PHP 7.4 to PHP 8.5 after testing.

Section by section, not one big switch

The rebuild was planned as a Laravel 13 platform on MySQL 8.4. Rather than build the whole thing in private and swap it over one night, we moved it a section at a time. nginx sent each address either to WordPress or to the new platform, so a finished section went live while the rest of the site carried on as before.

Team, player and match pages went live first, on 11 October 2026, for the big five European leagues: 42,383 addresses, rising to 52,638 the same evening when the Scottish Premiership and MLS were added. Player pages came back from the server in about half a second and match pages in about 0.2 seconds, against about 2.8 seconds on the WordPress plugin they replaced.

Match pages in the new design followed on 14 October, team pages on 16 October, and on 19 October the new design went live across the whole site.

Switching WordPress off

On 19 October 2026 the platform took over the content itself. At the switch it held 10,002 posts, 32 pages, 20,312 media files, 316 categories, 3,445 tags, 3,219 tables and 17,005 redirects. WordPress was made read-only, and a few minutes later switched off.

What the platform does now

  • A match centre showing the day's games by league, each linking to a preview, live view or report.
  • Competition hubs, including the Champions League with 1,499 matches across 12 seasons.
  • A stats centre, and record pages such as every Premier League Golden Boot winner.
  • League tables computed from match data, checked against the official standings. Since 14 October every table on the site is drawn by the platform.
  • A free score-prediction game, polls and other games for registered fans.
  • An editorial desk for the team, with an SEO dashboard, a table editor, an article editor and redirect management.

Data coverage widened on 20 October 2026 from 10 to 17 competitions, adding European and domestic cups and more leagues.

Fast pages on a big site

Pages carry cache tags, so publishing or editing a story refreshes the sections and home page that show it, at the server and at the CDN, in the right order. Fixtures that have not been played are cached for a minute, finished matches for an hour, so a live score is never stale for long and an old result costs almost nothing to serve.

Outgrown your WordPress site?

Send a few lines about what you are making. A real person replies, usually the same working day.