812 Digital Studio
Work

Web app

Liga VL

A 58-player tournament run out of a spreadsheet. We turned it into an app where players agree on match times, report results and watch the standings update instantly.

Client
A community of Age of Empires II players
Service
Web app
Site
ligavl.com
Liga VL homepage with the clan crest
The homepage treats a tournament between friends with the seriousness of a professional league.

01

The problem

A group of players runs a seasonal Age of Empires II tournament. It lived in a spreadsheet: someone typed in the results by hand, someone else moved them into the standings, and matchups got sorted out across scattered chats.

With 58 active players spread across divisions, that stops working. Nobody knows for certain who they're playing, what time they agreed on, or where the table actually stands — and the entire administrative load falls on one person.

02

What we built

We built the tournament application end to end. Each player signs in, sees who they're up against, negotiates the match time inside the app, reports the result, and watches their position update on the spot.

The administrator stopped entering matches. Now they open rounds, handle the edge cases, and the rest runs itself.

  • Web app with player accounts and an admin panel
  • Divisions with promotion and relegation between seasons
  • Live standings, by division and by season
  • Match scheduling between players: proposal, availability and confirmation
  • Result reporting with map, time and score
  • Mutual rescheduling and walkover requests
  • League calendar and in-app notifications

03

Key decisions

Players agree on the time, not the admin

This was the hardest part of the project and the one that delivered the most. Two players in different time zones have to agree without a third person in the middle: one proposes, the other checks availability and confirms, and only then does result reporting unlock. Coordinating match times was 80% of the administrative work, and the app now absorbs all of it.

Results close in order, no exceptions

You can't report a match before the time is agreed, change an agreed time, or touch the points by hand. Those rules don't live in the interface — where anyone can route around them — they live in the database. In a competitive tournament, the integrity of the table is the product: if it can be altered, the league stops meaning anything.

The edge cases are the product too

A player who doesn't show. A match that has to move. A bracket where someone sits out. Every one of those has its own flow in the app: whoever claims a walkover has to make the case for it, and the opponent grants it from their own screen. A real tournament is defined by how it handles exceptions, not by the happy path.

What the players ask for gets built

Several features came straight from the community mid-season: reopening a scheduled time, marking the winner of a walkover, sorting rounds newest-first. The tournament wasn't delivered and abandoned — it keeps evolving with the people using it every week.

Liga VL standings table by division
Live standings: matches played, wins, losses, draws and points, by division.

04

The result

58 active players run their own tournament. The league is in its seventh season, operating entirely on the app.

The spreadsheet is gone: a result a player reports lands in the standings instantly, with nobody transcribing it.

The administrator's job went from entering every match to opening rounds and handling exceptions.

Working on something similar?

Tell us what you need and we'll give you a straight answer on whether we can help and how we'd approach it.

Tell us about your project