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

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.

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 projectMore case studies
Website
First Step Therapy
A therapist with an online practice had nowhere to explain her service. We built her a bilingual site with packages, online payment and a free intro call.
Read the case studyDigital product
KnowCabo
The client wanted a site with information you can only get about Los Cabos. We built a bilingual guide with real-time weather, hurricanes, beaches and fishing.
Read the case study