How Wax Wars
gets built
A card game where the cards are the real vinyl you own. Rarity is counted from how few people hold each pressing; battles are decided by genre matchups written by real music history.
The idea
Where it came from
It started as a text thread. Photograph a record you actually own and it becomes a collectible card. Its power is set live by how few people in the system hold that exact pressing — "you played the original Doors album, critical hit, only 3 people in the world have this." The pressing matters: the OG Doors LP is not the reissue with "Riders on the Storm." On top of the collection sits a battle game where genre is the type, and the strengths and weaknesses between genres are grounded in real events — Punk beat Disco at Disco Demolition Night; Grunge ended Hair Metal.
Locked decisions
Chosen up front, so the build has no forks
How it works
The three mechanics that carry the game
1 · Rarity is counted, not printed
A release's tier is set live by its number of distinct verified owners. Fewer owners → higher power and crit chance; the top tier is a "critical hit" play. As more people scan a record it gets less rare, so the meta shifts over time — but a resolved match snapshots the rarity it was played at, so results stay reproducible.
2 · Ownership is verified end-to-end
Reverse-image search identifies the pressing and confirms it against Discogs. A two-image AI compare checks the user's photo really is that album (with a confidence gate). Then the anti-cheat: the app issues a one-time code the player writes on paper in the shot, alongside the runout/matrix etching — both read back automatically. No proof, no card.
3 · Genre decides the fight
One pure, tested resolver runs every mode. Card power (from rarity) sets the base; the genre matchup multiplies the hit; a crit roll can swing it. The type chart is the moat — every edge cites the real event or lineage behind it, and it grows as the catalog does.
| Attacker | Defender | Effect | Real lore |
|---|---|---|---|
| Punk | Disco | SUPER ×2.0 | Disco Demolition Night, Comiskey Park, 1979 |
| Grunge | Hair Metal | SUPER ×2.0 | Nevermind (1991) ended the Sunset Strip era |
| Hip-Hop | Disco / Funk | DRAIN ×1.5 | Built from the breaks of these records |
| New Wave | Disco | SUPER ×1.5 | Filled the void as disco collapsed |
| Punk | Prog Rock | SUPER ×1.5 | A direct revolt against prog excess |
| Teen-Pop | Grunge | SUPER ×1.5 | Late-'90s TRL era buried the grunge sound |
Build order
Everything is in scope — this is the sequence
/ and this plan at /plan, on a real public host.Under the hood
How it fits the existing setup
- Web app — a modern React/Next.js app, cloned from the same skeleton as the other in-house tools.
- Login — the shared single-sign-on already used across the stack; players get an account, admins get a curation role.
- Data — the shared Postgres database; releases, cards, matchups, decks, battles, and ratings.
- Vision — the existing AI image tooling identifies covers and verifies ownership photos, with a private on-box fallback.
- Realtime — the in-house messaging service carries live duel moves, so no new socket infrastructure is needed.
- Verification — the battle math ships with golden tests; the verify flow is proven against a real record before launch.