Inspiration

Fantasy sports are built for touchdowns and three-pointers, and we wanted the same energy for the market. Fantasy500 turns the S&P 500 into a league, where players can draft real tickers, set lineups, and compete on weekly price moves instead of box scores. We paired that with Solana to hold buy-ins, creating a competitive and fair experience for everyone. Finally, we deployed everything to the web using Vultr.

What it does

  • Leagues & drafts: Create leagues, invite friends, run snake drafts against the full S&P 500 universe.
  • Live market data: We have a live ticker strip and quote API pull real prices and daily % moves to immerse players in the action.
  • Wallet auth: Connect a Solana wallet with Phantom and sign in. Sessions are JWT-backed against a Rust API.
  • Real-time draft sync: WebSockets push draft updates so everyone sees picks as they happen.

How we built it

  • Backend: Rust (Axum) + MongoDB for leagues, teams, drafts, join requests, and scores.
  • Frontend: React, Vite, Tailwind, Solana wallet adapter (Phantom).
  • Market data: Server-side quote aggregation (batched requests, caching) so the UI stays snappy without exposing keys or hammering APIs from the browser.
  • Infra: API and WebSocket on one service; optional worker for scheduled scoring pipelines. CI/CD using Coolify and Vultr for live deployment.

Challenges we ran into

  • Public market APIs are flaky or rate-limited, so we had to intelligently pull ticket data.
  • Solana integration was tricky, especially because we wanted to test using devnet and not the main Solana chain (which would cost real money).
  • Scope vs. demo time. Our ambition was too big for the length of the hackathon.

Accomplishments that we're proud of

  • A cohesive product: a full loop from wallet -> league -> draft -> live tickers.
  • Polished landing and UX that reads “real app,” not only a hack.
  • Sensible architecture: Rust API, clear separation of real-time vs. REST, room to grow on-chain without rewriting the game.

What we learned

  • How to integrate wallet-based auth with a traditional API session model.
  • Practical lessons in caching and batching when every page load could mean hundreds of symbols.
  • That developer experience (clear errors, connection state, loading states) matters as much as features for judges and users.

What's next

  • On-chain verification: we currently use Solana for escrow but in future versions, we want to add blockchain verification for all transactions
  • Smarter scoring: weekly % return vs. price, historical baselines, and anti-abuse rules.
  • Mobile version: so that drafting is easier
  • Official data / paid tier if we outgrow free quote endpoints at scale.

Built With

Share this project:

Updates