All work
Web AppProduct

Villa Market

Quenga Designs · 2026

A reality-TV prediction market — odds, positions, and live standings for villa drama, built as a full-stack web app.

13
Seeded markets
5
Shows covered
0
Dependencies
Problem
Reality-TV fans argue about outcomes constantly, but there was no low-stakes way to put a number on a hot take — real prediction markets involve real money and regulation.
Solution
I built a play-money prediction market: yes/no markets priced in cents, a bottom-sheet trade flow with live payout math, and a portfolio view — all persisting in the browser with zero dependencies and zero build step.
Result
Live in production as a static Vercel deploy. Play-money only; no real currency is wagered.

The brief

Polymarket vibes, but for Love Island. Every reality-TV group chat is already an informal prediction market — who's getting eliminated, which couple survives the season. Villa Market makes it explicit: real odds, real positions, fake money. The product constraint was discipline itself: no accounts, no server, no build step. Open a URL and start trading.

What was built

You start with ₥1,000 villa coins. Every market is a yes/no question priced in cents — YES at 65¢ means the market thinks there's a 65% chance. Buy the side you believe in; if you're right, each share pays out ₥1. Thirteen seeded markets span five shows — Love Island, The Bachelor, Big Brother, Survivor, and Love Is Blind — with filter chips to cut between them.

The trade flow is a bottom sheet with quick-amount buttons and live payout math, so you see exactly what a position returns before committing. A My Positions tab handles the other side: one-tap cash out at the current price, all-time P/L tracking, and a full account reset for when a season goes sideways.

Your trades move the price, and prices drift on their own between sessions — so the market feels alive even solo.

Under the hood

The entire app is one file: a 988-line index.html. Zero dependencies, zero build step, zero backend. Balance, positions, and prices persist in localStorage, so state survives refreshes without a database. Deployment is the same story — a zero-config static site on Vercel where every push to the production branch redeploys automatically.

That architecture was a bet: a prediction market is mostly arithmetic and state, and neither needs a framework. Keeping it to a single file made the whole product legible at a glance and trivially portable.

Where it stands

Live in production. It's strictly play-money — no real currency is wagered, deposited, or paid out. The roadmap sketches where it could go next: multi-user leagues via Supabase with friends and leaderboards, weekly elimination markets that auto-open per episode, market resolution with payouts when outcomes settle, and price-history sparklines per market. Each of those adds a server; none has been needed to make the core loop fun.