National Lottery Generator App

6 Aug 2026 min read

Overview

National Lottery Generator is a personal project that suggests UK lottery numbers for entertainment. It started years ago as an excuse to try Laravel. In August 2026 I stripped that away and rebuilt it as a small vanilla PHP 8.3–8.5 app: file-based CSV caching, plain PHP templates, and a PHP built-in server for local work. If I was still doing lots in PHP, I would without doubt have gone down the Laravel route. However, I am not, and the Laravel version was a bit of a maintenance burden for what is ultimately a small hobby project. The new version is easier to keep alive, and it has tests that actually run in CI. I was basically having to deal with Dependabot PRs and security alerts for a project that is not even a business, and that was a bit of a drag.

The generator still does not predict anything. It looks at historical draws, applies a half-arsed bit of logic, and prints some lines. What changed is the cost of keeping it alive, fewer dependencies, no database, tests that actually run in CI.

Technologies Used

  • PHP 8.3–8.5: application code with no framework.
  • Composer: autoloading and a small set of dev tools (PHPUnit, Pint, PHPMD).
  • PHPUnit: unit and feature tests, including Set For Life coverage.
  • Playwright: UI tests in their own GitHub Actions workflow.
  • Azure App Service: production hosting with public/ as the web root.

Key Features

  • Lottery modes: UK Lotto, EuroMillions, Thunderball, Set For Life, Lotto Hotpicks, and EuroMillions Hotpicks.
  • Historical draw cache: CSV snapshots on the local filesystem, no database.
  • Simple UI: pick a game, generate lines, switch games from the menu.
  • Entertainment only: past results do not predict future draws.

Live Site

👉 Lottery Generator App As it’s on the free App Service plan, first load can take a good few seconds.

👉 Lottery Generator Docs

Repository

👉 GitHub Repo


A hobby app that finally matches its size: PHP, files, tests, and a live site. The Laravel version taught me a framework. The current one is easier to keep.