Paused Next.js · Supabase · Vercel cron

GOLAZO.

An app for my youth team, built for the Gothia Cup 2026.

The problem
The Gothia Cup in Gothenburg runs for a week, with a lot of time between matches. The question was how to keep the boys together as a team in that time without it feeling like homework.
The solution
Every player had a card with their own rating, challenged teammates to duels and played the daily quiz. All the points went into one shared leaderboard.
How I built it
I built GOLAZO for my own team, with my AI team. I couldn’t build anything while we were away, so everything the tournament week needed went live before we set off.
A GOLAZO player card styled like a trading card, with an overall rating of 87 and the player name Rakete. Next to it are the team leaderboard with player names and points (XP) and the World Cup prediction for Germany against Ivory Coast.

My youth team went to the world’s biggest youth tournament.

In July 2026 my team played at the Gothia Cup in Gothenburg, with the World Cup going on at the same time. So GOLAZO had two prediction games, one for the World Cup and one for the goals in our own matches.

The app felt like a game.

Shortly before we left, I reworked the scoring, because players who played less often stood no chance. From then on, beating a stronger teammate in a duel earned more points, and questions on fair play counted triple. Each day, one player was named player of the day.

After the tournament I put the winners in a hall of fame and kept GOLAZO going for a few more weeks as a summer cup. I stopped developing it on 24 September 2026.

/ tech decisions

Three decisions that mattered.

Sign-in

Join with a code, approved by the coach

A player joined with their group’s code and a player name of their choice, and no email address was needed. Nobody could play until I, as their coach, had approved them, and the database itself enforced that. From then on a personal link got them back in, on any device.

Data layer

Own schema, one way in

The data sat in a separate, walled-off part of the Supabase database (a schema) that nobody could reach directly from outside. The app got to it only through fixed functions inside the database (RPCs). The anti-cheat rules lived there too, such as no predictions after kickoff and a rating you couldn’t push up just by repeating the same thing.

World Cup scoring

104 matches, scored automatically

The prediction game had all 104 matches of the 2026 World Cup loaded. A cron job, a task that runs by itself on a schedule, fetched the results and scored the predictions. Once the World Cup was over, I took the prediction game out of the app.

See GOLAZO live → Status   Paused · no longer in development

/ other apps