DEV Community

Cover image for I built a football tournament simulator that runs entirely in the browser (and on Android)
Oraz Chollaev
Oraz Chollaev

Posted on

I built a football tournament simulator that runs entirely in the browser (and on Android)

What is Invictus?

Invictus is a football tournament simulator you can run straight in your browser — or install on Android. No sign-up, no server, no ads. Everything lives in local storage.

🌐 Live demo: invictus-tournament-maker.vercel.app

📱 Android: itch.io page

🐙 GitHub: orazchollaev/invictus-tournament-maker


Why I built it

I wanted a simple tool to simulate fantasy tournaments with friends — Champions League-style brackets, custom teams, multi-season leagues. Everything I found was either too complex, paid, or required an account. So I built my own.


What it can do

Three competition formats

  • Knockout — single-elimination bracket with optional two-legged ties, aggregate scoring, penalty shootouts, and a third-place match.
  • Group Stage + Knockout — round-robin groups feed into a knockout bracket. Handles wildcard spots, cross-seeding (1st Group A vs 2nd Group B), no-rematch mode.
  • League — full round-robin with a standings table. Supports multiple tiers with promotion and relegation between them. ### Simulate or play it out yourself

Every match lets you enter scores manually. Or hit Simulate and let the engine handle it. Three tuning knobs:

Setting What it does
Surprise Factor 0 = strongest team always wins. 100 = pure chaos.
Home Advantage Power boost for the home side.
Form Factor Recent form affects team strength. Win streaks make you stronger.

Monte Carlo simulation (new in v1.9)

Run 10,000 simulations of your tournament in one click and get a probability breakdown — who's likely to win, reach the final, or get knocked out early. Great for answering "what are the actual odds?"

Multi-season history

When a tournament ends, start a new season with the same teams. All seasons are numbered (S1, S2, …) and nothing is lost. The history section tracks:

  • Champions and title streaks
  • All-time standings table
  • Biggest wins, most clean sheets, total goals
  • Per-team records broken down by season ### Draw modes

Each new season can be drawn randomly, seeded (best teams kept apart), or manually by dragging teams into position.


Tech stack

  • Vue 3 + TypeScript
  • Vite for bundling
  • Capacitor for Android packaging
  • vue-i18n — EN / TR / RU / ES / PT support

- All data stored in localStorage — no backend

What's next

  • More sports formats (basketball, hockey)
  • Export bracket as image (PNG export is already there for the bracket view)

- More languages

Try it

👉 invictus-tournament-maker.vercel.app

Load one of the sample datasets (Champions League, World Cup, etc.) to get started in seconds. Feedback and PRs welcome on GitHub.

Top comments (0)