PaniniXchange

The social network for World Cup 2026 sticker collectors.

STACK
React · Vite · Tailwind CSS · React Router · Python · FastAPI · SQLModel · PostgreSQL · Stripe · Leaflet
STATUS
Live
PaniniXchange screenshot

OVERVIEW

PaniniXchange connects nearby collectors to swap stickers from the 2026 World Cup Panini album. You log how many copies you own of each of the 994 stickers; a radar finds collectors where a swap helps both sides, and a negotiation table takes the trade from invitation to a close both people confirm. Reviews from real trades build each collector's reputation.

WHAT I FOUND → WHAT I DECIDED

  • A swap is only worth making if both people get stickers they're missingThe matcher keeps only two-way trades and scores compatibility on how balanced and how large they are
  • Either side could change the offer after the other had agreed to itAny edit resets both confirmations; the trade only seals once both confirm the same table
  • Swapping stickers means meeting someone you don't knowA partner's phone number is revealed only after the trade is completed

WHAT IT DOES

ALBUM
All 994 stickers in a grid with search and filters; copies update instantly and roll back if the save fails.
RADAR
Compatible collectors on a map, ranked by compatibility, with the distance to each.
TRADE
Invite, negotiate on a shared table, suggest stickers from the other side, and confirm together.
REPUTATION
Ratings from completed trades feed points, levels and badges on each profile.
PREMIUM
Pro and Legend memberships through Stripe.

HOW IT WAS BUILT

Designed as five business flows on one relational model — sign-up, album, radar, trade and reputation — each documented with its tables, endpoints and rules before being built. A React app on Vercel talks to a FastAPI service and PostgreSQL on Railway; development runs on SQLite, so the only difference between environments is configuration.

SCREENS