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.

Own venture·2026·Launching end of July·club90.app
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
DM Sans, variable 100 to 1000, for everything that moves. Playfair Display carries the wordmark alone.
#0A0A0AGround
#141414Surface
#F5F2EBText
#E8521AAccent
Voice
No maybes. Just play.
Accent
Orange arrives only when the match is real.
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.