← Products
Fantasy football

Fanta Rainbow

Live fantasy football auctions. The house keeps the books, players open a link and bid from their phone, the countdown decides. What is left afterwards is the league, the squads and the album.

Fanta Rainbow

The product

Fanta Rainbow is the house at a fantasy football auction. The organiser creates the auction, picks the team names and gets a personal link for each one; on auction night the board runs on a big screen and everyone else is on their phone. Whoever bids last before the countdown runs out takes the player.

No spreadsheets, no credits counted by hand, no "but I said 34 before you did": the server keeps the books and everybody sees the same countdown on the same second. Including whoever is not in the room.

What it does

  • A two-stage auction - urna, the pool the auctioneer draws from at random for the star players; chiamata, everyone else, put up for auction only when someone searches them by name to fill a slot.
  • Bidding from a phone - no app to install and no sign-up for the people playing: they open their own link and raise.
  • Synchronised countdown - the client corrects the drift between its own clock and the server's, so playing remotely does not hand anyone an extra second.
  • Squad rules enforced by the house - a full position rejects the bid; a credit reserve is computed on the remaining slots so every squad can be finished; the auctioneer can undo the last sale, refund included.
  • Player list import - the official Fantacalcio.it CSV as it comes, columns matched by header rather than by position, Mantra roles folded back into the four classic ones.
  • The season, not just the night - head-to-head or total-points league, lineups gameweek by gameweek, achievements, Rainbow credits and a sticker album opened in packs.

Stack

Nuxt 4 and Vue 3 with Tailwind CSS v4, PostgreSQL queried in hand-written SQL, Stripe for the league credit, S3 storage for images, Docker deploys.

There is no timer running on the server: every bid writes the lot's expiry, and the first request that finds it in the past awards the player. Writes are compare-and-swap on the row version, so two bids in the same instant never overwrite each other - the second one is replayed against the updated bid. Invariants are checked on every mutation (credits consistent with the squads, no player in two teams, ledger aligned): a write that violates them is not persisted.

Model

A one-off league credit: 10 € per league, unlimited teams, paid by the organiser only. No subscription, no per-participant cost, no features locked halfway through the season. Finished leagues stay readable and export to JSON.

Status

Live in production at fantarainbow.com.