Football Club SimBuilt & launched end to end

Football Club Sim: 5k managers a month, playing every match live.

A football management game for iPhone where you don't just press simulate. You manage every match live, then take on your friends in private online leagues. I built the app, the match engine, the multiplayer backend on Cloudflare and the website, and took it from first line of code to the App Store in under six weeks.

Product
playfcsim.com
Platform
iPhone
Services
Game designApp development (iOS)Multiplayer backendWebsite
Football Club Sim website: Manage the club. Play every match live.
The marketing site, in 21 languagesplayfcsim.com
The numbers

From first line of code to the App Store in under six weeks.

20k+Downloads
5kMonthly active players
21Languages in the app
What I built

A football manager you actually play.

Not a spreadsheet you press "simulate" on. The match, the career and the multiplayer, all designed and built by me.

Every match, live

Both halves play out in a broadcast-style 3D view or on a classic 2D pitch. You change the tactics from the touchline at any minute, make the subs and give the team talks that swing momentum.

  • 19 formations with a duty for every position
  • Half-time talks, touchline shouts and up to five subs
  • An engine tuned to real-world scoring

A full career

Transfers, loans and contract talks. Finances and board reviews, a youth academy with hidden potential, scouting and ageing, plus challenge scenarios when a season isn't enough.

A living football world

16 leagues and 320 clubs with promotion, relegation, cups and continental competitions, along with rivalries, press conferences and manager progression.

Leagues with friends

Private online leagues for 2 to 10 managers, joined with a six-character code and played across several seasons. Every derby is settled head to head.

How the multiplayer works

Friends' leagues on a serverless edge backend.

No game servers to run and no accounts to manage. A league is a handful of rows at the edge, and every phone rebuilds the rest from a shared seed.

  1. Join

    Create and invite

    A league is created at the edge and friends join with a six-character code. No sign-up: each player gets a private ID and recovery token, and only a hash of it is stored.

  2. Play

    Simulate locally

    Matches between AI clubs run on every phone from the shared seed, so they never need syncing. Your games against the AI play live on your phone.

  3. Resolve

    One result, on the server

    Friend-versus-friend matches are resolved once, on the server, from both locked team sheets. It runs the app's own match engine, bundled for the edge and pinned by version.

  4. Advance

    Leagues never stall

    When every human fixture is in, the week moves on. An hourly job plays absent managers on their saved team sheets, and long-absent clubs hand over to the AI.

Screens

The site and the game.

In the game

Live match screen: an 89th-minute winner in the Broadcast 3D view, with the score and timeline
Every match live in 3D
Transfer screen: the selling club counters on fee, wage and contract length
Transfers that bargain back
Press conference screen: a question before a title decider, with four answers from calm to fiery
The press room
How it's built

A live match engine and a multiplayer backend, built solo.

A top-level look at the rest of the stack. The solo game runs entirely on the phone; the edge backend only handles what friends' leagues need.

See how it's built Optional, for the technically curious
Client

One strict TypeScript codebase

Built on React Native, with a broadcast-style 3D match view and a 2D pitch, animation off the main thread, sound and haptics. Around thirty screens, laid out for iPhone, iPad and iPhone Duo from one codebase.

TypeScriptReact NativeExpoReanimatedSVG
Match engine

Deterministic and seeded

Elo ratings and a Poisson goal model with a low-score correction, tuned to real-world scoring and draw rates. The same seed gives the same match on any phone or on the server.

Seeded RNGEloPoisson modelGolden tests
Backend

One Worker, one database

Friends' leagues run on a single serverless Worker with a D1 database, scheduled jobs and rate limiting at the edge. The stored state is tiny; everything else is rebuilt from the seed.

Cloudflare WorkersD1Cron TriggersRate limiting
Consistency

Money can't be created

Every money or ownership change is one atomic, guarded SQL statement. Transfers are an append-only ledger replayed the same way on server and phone, and budgets are derived from it, never stored.

Atomic SQLAppend-only ledgerIdempotency keys
Offline

Plays offline, syncs when back

The solo game never touches the network, and a test enforces it. Multiplayer moves made offline queue up and replay in order, safely, when the connection returns.

Offline queuePolling syncLocal cache
Shipping

Ship daily, in 21 languages

Signed over-the-air updates from a self-hosted update server, 21 in-app languages, and store listings in 50 locales pushed by script.

OTA updatesR2fastlanei18n
AboutJosh Pavey
Josh PaveyFounder

Senior strategy. Hands-on delivery.

I've spent 7+ years in paid advertising, agency-side and in-house, most recently as Head of Paid Search for 3+ years at Soar With Us, a D2C agency, growing brands to 8+ figures. I've since started Pavegrowth to continue my love of building and growing brands with that expertise.

Alongside the ad accounts I build Shopify themes, iOS apps and software products, including my own. Growth marketing and development under one roof. I utilise AI workstreams to support moving faster & streamlining internal & client workflows to ensure efficiency, whilst the strategy, judgement and accountability are mine. You talk directly to the person doing the work.

7+Years in paid ads
£10M+Ad spend managed
100sAudits & accounts managed
30-minute intro call

Let's grow your brand, together.

Thirty minutes to get to know your brand, your goals and where the growth is. No pitch deck, just a straight conversation about where we'd take it next.

  1. 0–10Your brand, goals and growth targets
  2. 10–25Where I'd look first for growth, and why
  3. 25–30Fractional, a project, or not a fit
or leave your details
Thanks, got it.

I'll get back to you shortly about your request. Looking forward to learning more about your project & goals!

Book an intro