Money Never Sleeps

Production
ReactTypeScriptViteTailwind CSSClerkNeon PostgresDrizzle ORMClaude APIElevenLabsSwiftUIKotlinAlchemy APICoinGecko APIResendVercel
Work with me
Coming soon to theApp Store
Coming soon toGoogle Play
MNS Fantasy home: Run your team like a front office. A sample payroll on real NBA contracts sits $8.5M over the first apron, and Bump proposes a trade to get under it.

734 commits in the last 90 days · 1,344 all-time

Money Never Sleeps started as one fantasy basketball dynasty league with real NBA salary cap rules and a prize pool held in crypto. It's now MNS Fantasy: a platform where five games share one app, one login, one design system, and one AI general manager. On October 12, 2026 every game moved into mnsfantasy.com in a single cutover, the NBA dynasty opened for its first season, and Bump learned to talk.

A real league, with real money problems

The NBA dynasty is the flagship. Every player costs what his actual NBA contract pays, so bargains are real bargains and stars come with real consequences. Teams build under a cap ladder that mirrors the NBA's: spend freely under the first apron, pay a one-time fee to cross it, pay per million over the second, and never cross the hard cap.

The NBA dynasty rules: real contracts, nine head-to-head categories, eight keepers priced by round, nightly lineups, and the cap ladder from $0 to the $272M hard cap
Real contracts, nine categories, and a cap ladder with teeth.
  • Nine-category head-to-head matchups, with lineups set by the night; each player locks at his own tip-off
  • Up to eight keepers, each priced by a draft round, with rookies priced by their draft slot
  • Rookie draft on the shared draft engine, with traded picks changing hands on the board
  • League setup reads the real NBA schedule, light weeks included
  • The WNBA runs the same dynasty game on its own calendar, from the same module

Keeper season

Before the season, every team plans its keepers with last season's stats on every player, sorted by a category z-score per dollar. Members save competing ideas, submit one, and can change their plan any time until the commissioner locks keepers. The cap meter and the cost of each open spot update as they go.

The keeper planner: a roster table with salary, keeper round and last season's nine-category stats, beside a cap meter and the team's draft rounds
Plan up to eight keepers against the cap.

Bump, your AI general manager

Tap the mic and talk the way you'd talk to your GM. Bump answers out loud, streams his thinking as he goes, and puts the exact facts on screen (picks, spreads, salaries, rounds) while he speaks. He knows where your league is in its season, so he won't suggest a waiver claim during keeper season.

Ask for a trade, a lineup, or a free agent. He shows his math.
  • Evaluates and proposes trades, running both sides' cap math before anything is sent
  • Ranks the waiver wire by value per $1M and checks each claim fits your cap
  • Sets a whole week of lineups at once, and saves and submits keeper plans
  • In the NFL pool, reads out your picks and puts them on screen
  • Acts with your own login, so he can do anything you can and nothing you can't, and reads back every move for your yes first

Voice runs on ElevenLabs with the device voice as a free fallback, and Bump stops talking the moment you talk over him.

Track the pot like a portfolio

The prize pool can sit in cash, crypto, or both. Point MNS at the league's public Ethereum wallet and the pot's live value counts in, priced in real time. Every payout is a share of the pot, so the champion's prize rises and falls with it. It's tracked, never handled: no money moves through MNS, and the commissioner holds the pot the way the league always has.

A sample prize pool held in Bitcoin, charted over 30 days, with each payout shown as a share of the pot
Every payout is a share of a live pot.

One login. Every game.

NBA and WNBA dynasty leagues, NFL pick'em against the spread, PGA fantasy golf with waivers between events, and March Madness picked by seed tier. Each game used to be its own app on its own subdomain. Now each is a module inside one app, and every old link still lands on the same page. Sign in and you land in the league you were in last.

The five MNS games: NBA Dynasty, NFL Pick'em, WNBA Dynasty, PGA Fantasy Golf, and March Madness
Five games, one app.
  • One navigation model everywhere: the same Home · Play · Standings tabs in every game, and one ☰ menu listing your active leagues
  • A 60-second rule as a shipping gate: a member finishes the week's action in under a minute, at most two taps from login, or the design doesn't ship
  • Built for everyone in the group, with an 18px base, large tap targets, and measured AA contrast in both light and dark themes

In your pocket

Native iPhone (SwiftUI) and Android (Kotlin + Jetpack Compose) apps share the website's login and cover every game: NFL picks and manager tools, basketball leagues with the keeper planner, matchups and transactions, golf pools, NCAA leagues, and Bump in voice mode. The iPhone app is in beta on TestFlight, with the App Store and Google Play coming soon.

Engineering details

  • The Singularity: five separate apps merged into one in a single cutover. Each old subdomain 308-redirects to mnsfantasy.com/<game> with its path and query intact, and its API is rewritten to the game's new endpoint, so open tabs and old links kept working
  • Each game is a lazy-loaded module with its own strict TypeScript build and serverless API, so one game's update never ships inside another's code
  • One hub owns drafts: a shared draft engine that knows nothing about any sport. Games push an item pool and read picks back
  • Basketball is one module serving two sports, with each request scoped to its sport and separate Postgres schemas, so no rows are shared
  • mns-ui, a shared design system (tokens, light and dark themes, components) synced into every app, so pages compose and never restyle
  • Every commit and build is scanned for secrets before it can ship

Technical Stack

React 19, TypeScript, Vite, Tailwind CSS, TanStack Query, and Framer Motion on the web, with Vercel serverless functions for the API. Clerk for one login across web and native; Neon serverless Postgres with Drizzle ORM, one schema per game. Bump runs on the Claude API with tool use against the same APIs the app calls, and speaks through ElevenLabs. Alchemy reads the league's wallet and CoinGecko prices it, and Resend sends the branded email suite. Native apps in SwiftUI and Kotlin/Jetpack Compose. Solo-built: product, design system, web, native apps, and the AI agent.

Work with me

Want something like this built?

I take on client work — sites, apps, AI systems, and devices. Tell me what you're imagining and I'll tell you how I'd build it.

Work with me →