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
- rust
- solana
- typescript
- vultr
Log in or sign up for Devpost to join the conversation.