# #0004 AthleteEra

> What's a college athlete's card worth tonight?

- Kind: showroom
- Status: Active
- Entity: Solo
- Role: Founder, design, build
- Stack: Next.js, Drizzle, Neon, Ably, Stripe Connect
- Started: Mar 2026
- Platform: web
- Production deploys since Sep 1: 0, from the spec, read live from Vercel
- Page: https://daltoncox.com/jobs/athleteera

## 01 The arena: Five cards each. The score moves the cards.

This is the live H2H matchup, the one screen that is the product. Your five athletes across the bottom, the opponent's across the top. Every basket, board and steal lands as fantasy points on a card, and the card's value moves with it. The epicenter pulses on every play.

The feed here is a seeded script, so the night is invented, but the arena is the real one: the same reducer, cards and clock. Press Play. Speed it up. Start another game and the names stay while the night changes.

*Playable demo (arena): Playable. Names and numbers are invented; the reducer is the product's.*

## 02 The model: Three heads, one card.

A brand studio for athletes, fantasy-style card leagues for fans, and a card market where values move on real performance. Fans first; the DFS model proved the beachhead, and the matchup is where fans spend the night.

The card is the unit across all three. The athlete's page issues it, the league plays it, the market prices it.

*Three heads. One card.*

| | |
|---|---|
| Studio | athlete pages, NIL-ready |
| Leagues | H2H card battles, live |
| Market | values move on performance |
| Payouts | Stripe Connect |

## 03 The feed: Plays in, cards out.

Plays arrive from Sportradar, land in Redis, and fan out over Ably to every open arena. A reducer turns each play into fantasy points and a value move. The arena is a pure function of the event log, so a reconnect replays the log and lands in the same state.

Points: 2PT 2, 3PT 3, FT 1, REB 1.2, AST 1.5, STL 3, BLK 3, TO minus 1. Win probability is the score gap against the time left, nothing cleverer.

*The path of one play. The reducer above runs the same table.*

| | |
|---|---|
| Source | Sportradar |
| Store | Redis |
| Fan-out | Ably |
| Reducer | event log → cards |
| Points | 2PT 2 · 3PT 3 · REB 1.2 · AST 1.5 · STL 3 |

## 04 Learned: Pick the one screen that is the product and build that first.

Everything else is a form. The schema merged first, then the arena spec. The arena above is that spec running on a script; the real feed comes next, and nothing in the arena changes when it does.

The drawing below was the plate until tonight.

*Drawing: The plate, as drawn before the arena ran.*

## Punch list (3 open)

- Wire the arena to the real feed
- Fan screens
- Stats feed: Sportradar to Redis
