R
Robin D Castro
Robin D Castro
Fanpire logo

Experiment

Fanpire

FIFA World Cup 2026 Fan Vote Territory Map

Year

2026

Role

Product Designer & AI-Assisted Developer

Type

Side Project

Built With

Next.js 15React 19TypeScriptHono APISupabaseDrizzle ORMMapLibre GLCloudflare WorkersClerk AuthTailwind CSSSentryWeb Push API

Quick Overview

A full-stack fan engagement platform for the FIFA World Cup 2026 — one tap to vote for your team, a live 3D choropleth map showing who dominates each district. Built entirely by one designer using AI-assisted development.

400+

Votes Cast

30+

DB Tables

759+

Districts Mapped

<50ms

API Latency

Key Outcomes

Shipped a production-grade full-stack app (3 platforms, 30+ DB tables, real-time maps) as a solo designer with AI
400+ votes cast with returning users and active streak engagement despite launching just one day before the tournament
Proved that product thinking — not engineering expertise — is the bottleneck for building software in the AI era
Every post-MVP feature was user-requested: GPS auto-detect, rankings, live match data, and predictions all came from real feedback

Brand Colors

Ink

#15082B

Violet

#7B3FE4

Gold

#F2B33D

Cream

#F7EFE0

Pitch

#0A1628

Headings & UI

Bricolage Grotesque

Taglines & Italic Accents

Fraunces

What started as a fun idea during World Cup fever became a fully functional fan engagement platform — designed, architected, and built entirely with AI assistance. Fanpire proves that a designer with product thinking can ship a complex full-stack app by leveraging AI as a development partner.

Concept

The Idea

The FIFA World Cup 2026 is here, and fan energy is everywhere. The idea was born from brainstorming sessions with two close friends — what if fans could claim territory for their team? Vote in your district, and the map changes color based on who's winning. The rivalry IS the product.

While I designed and built the entire product solo with AI, those two friends remained crucial throughout — acting as the first peer reviewers, pressure-testing ideas at every stage, and shaping the direction of each new feature.

The core mechanic is simple: one tap to vote, and a live map shows the result. But building the infrastructure to support real-time voting, fraud prevention, gamification, and a 3D interactive map — that's where it gets interesting.

One tap to vote. A live map shows who's winning. The rivalry IS the product.

Architecture

Technical Decisions

Every architecture decision was made to balance simplicity with scalability. The goal was: ship fast, handle real traffic, and keep costs near zero.

3

Apps

30+

DB Tables

<50ms

API Latency

759+

Districts

01

Three Independent Apps

Webapp (Next.js on Vercel), API (Hono on Cloudflare Workers), Admin Panel (Vite on Cloudflare Pages) — each with its own repo and deployment pipeline.

02

Anonymous-First Auth

Users vote instantly with a client-side UUID — zero friction. Clerk auth layers on top for gamification features, never blocking the core flow.

03

Trigger-Maintained Aggregates

Database triggers keep locality_stats in sync — clients read pre-computed aggregates, never raw vote tables. Fast reads at any scale.

04

Edge-First API

Hono framework deployed to Cloudflare Workers — sub-50ms response times globally, with automatic scaling and zero cold starts.

05

Static GeoJSON Boundaries

759+ Indian districts served as static GeoJSON files — no tile server costs, instant map rendering with zero infrastructure overhead.

06

Device Hash Fraud Prevention

SHA-256 of IP + browser signals for vote deduplication, with documented CGNAT limitations and mitigation strategies.

Map

3D Interactive Map

The map is the hero of the product. The idea was to take an existing open-source map renderer — MapLibre GL — and build an entirely custom data visualization layer on top of it. Instead of building maps from scratch or paying for expensive tile servers, I used free CARTO dark basemap tiles as the canvas and layered custom GeoJSON boundaries, 3D extrusions, and interactive overlays on top.

This approach — external map + custom data layer — means the app gets a professional, beautiful basemap for free while owning the entire interactive experience above it. The GeoJSON boundary files for 759+ Indian districts are served as static assets, parsed on the client, and rendered as MapLibre fill-extrusion layers with dynamic coloring based on real-time vote data.

External map renderer as canvas. Custom GeoJSON boundaries as the data layer. Free basemap tiles + owned interactive experience = professional 3D map visualization at zero infrastructure cost.

01

3D Choropleth Extrusions

Each district's height and color represents the leading team's vote count — taller means more votes, creating a physical landscape of fan dominance.

02

Neon Glow Borders

District borders glow in the leading team's color using line-blur and line-opacity properties — making the map feel alive at night.

03

Animated Flag Markers

Dominated districts show animated flag markers for the winning team, adding visual celebration to the map.

04

Interactive Popups

Hover/click any district to see team standings, vote counts, and percentage breakdowns in a styled popup.

05

Cinematic Mode

Auto-rotation with configurable pitch and bearing, plus a 2D/3D toggle — making the map a visual centerpiece, not just a tool.

06

External Basemap + Custom Layers

CARTO dark basemap with dramatically reduced brightness as the canvas, with all interactive features built as custom MapLibre layers on top — zero tile server costs.

Gamification

Gamification & Engagement

Beyond voting, the platform has a deep engagement layer designed to keep fans coming back.

6

Rank Tiers

60

Avatars

26

Arena Size

7

Streak Days

01

6-Tier Rank System

Rookie → Supporter → Ultras → Captain → Legend → Emperor. XP earned through votes, check-ins, predictions, referrals, and sharing.

02

60 Character Avatars

Illustrated animal characters ("Ace Goat", "Baron Bat", "Captain Claws") with generated usernames — identity without requiring real names.

03

Match Predictions

Predict match results, exact scores, first scorers, and penalty outcomes. Points awarded for accuracy.

04

Arena Contest System

Groups of up to 26 members with invite codes, individual and group leaderboards, and a separate "Fang Points" currency.

05

Daily Check-in Streaks

Streak-based XP bonuses encourage daily engagement, with 7-day streak multipliers.

06

Push Notifications

Web Push for match alerts, goal notifications, prediction reminders — with quiet hours and dedup built in.

Design

Design System

The visual identity was crafted to feel premium, immersive, and unmistakably football. A dark-first design with rich accent colors creates the atmosphere of a stadium at night.

01

Dark-First Aesthetic

Ink (#15082B) background sets the stage — deep, immersive, and optimized for the glowing map visualization.

02

shadcn/ui Foundation

Built on shadcn/ui components, customized with Fanpire design tokens for consistency and speed.

03

Mobile-First PWA

Installable as a PWA with shortcuts, offline support, and dynamic OG images generated at the edge for social sharing.

Scale

Production Infrastructure

The app is built for real traffic with production-grade infrastructure.

01

Multi-Platform Deployment

Vercel (webapp), Cloudflare Workers (API), Cloudflare Pages (admin) — each optimized for its workload.

02

CI/CD Pipelines

GitHub Actions for API and admin deployment. Cron jobs every 5 minutes for live match data sync.

03

Security Hardened

CSP headers, HSTS, rate limiting, CORS restrictions, JWT verification, admin allowlists — professional security posture.

04

Full Observability

Sentry error tracking, Google Analytics, Hotjar session recording, and custom analytics events table.

Database

30+ Table Schema

The Supabase Postgres database has 30+ tables designed with Drizzle ORM — covering core voting, competitions, matches, gamification (XP, ranks, challenges, predictions), arena contests, push notifications, analytics, and admin infrastructure. Key patterns include idempotent ledgers for XP and Fang Points, trigram search indexes for places, and trigger-maintained aggregate tables.

30+

Tables

Drizzle

ORM

Supabase

Host

Ledger

Pattern

AI Process

Built Entirely with AI

This project demonstrates that a designer with strong product thinking can ship production-grade software by using AI as a development partner. Every line of code was written through AI-assisted development — but the product decisions, architecture choices, UX flows, and design system were all driven by human judgment.

The AI handled implementation details; I handled the "what" and "why." The result is a complex full-stack application with 30+ database tables, real-time maps, gamification systems, push notifications, and multi-platform deployment — shipped by one person.

The AI handled implementation. I handled the "what" and "why." One designer. Three apps. 30+ tables. Production-grade.

  • 01Product spec and architecture designed by me, implemented with AI
  • 02Database schema (30+ tables) designed through iterative AI collaboration
  • 033D map interactions prototyped and refined through rapid AI iteration
  • 04Security hardening and deployment infrastructure configured with AI guidance
  • 05The entire codebase — webapp, API, admin panel — built by one designer + AI

User Feedback

Shaped by Real Users

Fanpire wasn't designed in isolation — it evolved through continuous feedback from real users and peers throughout development. Every major feature addition was a direct response to what people actually asked for after using the product.

Every feature after the MVP was user-requested. The product roadmap wrote itself through feedback loops — not assumptions.

400+

Votes Cast

01

Started as Vote & Go

The first version was dead simple — tap a team, cast a vote, see the map change. No sign-up, no accounts, no friction. Just one action and a result. This was intentional to validate the core mechanic.

02

GPS-Based Auto Location

The biggest friction point: users had to manually select state → district → team → vote. Too many steps. The fix — detect GPS location for users in India and auto-fill state and district, reducing the vote flow to just picking a team.

03

"Who's winning overall?"

The first wave of feedback was consistent: users voted, saw their district, but wanted to know which team was dominating nationwide. This led to building team rankings with nationwide and district-level filters.

04

Live Match Data & Predictions

Users wanted the app to feel alive during matches. Integrated a live football API for real-time scores and player statistics, which powered informed match predictions — scores, first scorers, and outcomes.

Outcomes

What This Proves

Fanpire launched just one day before the FIFA World Cup kicked off — far later than planned. Key features like match predictions, fan zones, and the new user flow were still being built during the Round of 16. The late timing meant the product never got the early-tournament window to build an audience organically. Despite that, it crossed 400+ votes and saw real momentum — users were returning, streaks were being maintained, and the map was coming alive with team colors.

01

Designers Can Ship

With AI as a development partner, product designers can go from concept to production-grade software.

02

Product Thinking Matters Most

The hardest part wasn't code — it was deciding what to build, how users would interact, and what to cut.

03

Momentum Despite Late Launch

Launched a day before FIFA started, with major features shipping mid-tournament. Still saw real traction — proving the concept resonates even without ideal timing.

04

Spec-Driven Development Works

A thorough product spec and pressure test document guided every decision, keeping the project focused and shippable.

Try It

See it live

FIFA World Cup 2026 Fan Vote Territory Map

Visit Fanpire