Case study
Club 90
A consumer app for caged soccer, 5v5 through 8v8. The group chat kills the game a few players short; Club 90 fills and locks the match, so the only maybe left is yours.
The surfaces
The lock is the product.
Club 90Tonight
8:00 PM · Oakland Park
Fort Lauderdale, FL
5v5CagedIntermediate
8 of 10 in
A match filling itself. Every slot is a person who said yes, not maybe.
Club 90Tonight
8:00 PM · Oakland Park
Fort Lauderdale, FL
5v5CagedIntermediate
10 of 10
LOCKED IN
Payment held. See you at the cage.
The brand promise made executable: the last slot fills, and the match locks.
The system
Its own tokens, nothing borrowed.
No maybes. Just play.
Club 90
#0A0A0AGround
#141414Surface
#F5F2EBText
#E8521AAccent
What shipped
Brand first, then the build.
Brand system
Mark, wordmark, color, and type, built in Figma before a single screen was designed.
iOS app
React Native with a Supabase backend and Stripe payments.
The lock
Matches confirm when the last slot fills. The mechanic is the brand promise made executable.
Launch site
club90.app carries the world while the app moves through the App Store pipeline.
The system behind it
One person, end to end.
This is the consumer app category: the same one-person system pointed at a mobile product, from brand system to App Store pipeline. Different world, different type, different accent, same method.
What I would build next
Named openly, because unfinished is honest.
Skill tiers
Transparent player levels. In this market it is the loudest ask, and the hardest thing to keep honest.
Facility partnerships
Caged venues across South Florida, starting in Fort Lauderdale.
Match ratings
Post-match signals that keep the tiers meaning something.