Projects
Apps, open-source tools, and side projects for football data. No gambling ads, ever.
Single-club Premier League companion app
Pick your Premier League team and get everything about them in one place. Fixtures, stats, transfers, news, notifications. No ads, no sign up.
React NativeExpoSportMonks APICloudflare Workers
Rival team misery alerts
Push notifications when your rivals lose, concede, or get a red card. Schadenfreude as a service.
React NativeExpo
Teletext-style live football scores
Live scores in retro Ceefax style. No ads. No betting. Available on iOS, Android, and the web.
React NativeExpoCloudflare Workers
Football entity register — 400K+ people, 45K+ teams, 30+ providers
The canonical identity resolver for football data. Maps player, team, and coach identities across Transfermarkt, FBref, Sofascore, Opta, and 30+ other providers using stable Wikidata QIDs.
PythonCloudflare WorkersD1Wikidata SPARQL
Claude Code plugin for football data analytics
Makes AI coding assistants expert at football data. 10 skills, 3 specialised agents, 7+ data provider integrations. Available from the withqwerty plugin marketplace.
Claude Code PluginMCPSkills Framework
React component library for football charts
Adapters for messy provider data plus React components for the story. Turns Opta, StatsBomb, Wyscout, and similar feeds into typed events, then renders shot maps, pass networks, timelines, formations, and pitch views with publishable defaults.
TypeScriptReactSVGnpm
Claude Code plugin for building and shipping with conviction
A plugin that helps you think before building, focus while building, and review before shipping. Available from the withqwerty plugin marketplace.
Claude Code PluginSkills Framework
Tail Cloudflare Worker logs from the terminal
A CLI tool for tailing Cloudflare Worker logs in real time. npm install and go.
TypeScriptnpmCloudflare API
Type-safe client for the SportMonks Football API
A TypeScript SDK for the SportMonks v3 Football API with full type coverage.
TypeScriptnpm
Open dataset of Premier League injury burden data
Ten seasons of injury, suspension, and absence data across six European leagues. Companion dataset to the 'Availability Is the Best Ability' footnote.
CSVPython
This website — charts, interactives, footnotes
The site you're on. Interactive data visualisations, long-form essays, and project pages. Built with Astro, deployed on Cloudflare Pages.
AstroD3.jsCloudflare Pages