The beginner's odds guide ΓÇö not a sportsbook. Compare live lines, translate odds into plain English, calculate possible payouts, and learn what each bet means before you wager elsewhere. Football, baseball, basketball, hockey, soccer, golf, NASCAR, horse racing, and greyhounds.
We do not accept wagers. Informational use only. Bet responsibly.
Status: live provider wiring is active. The app tries real feeds first and only falls back when every configured provider for that sport is unavailable, out of quota, or missing credentials. See Provider status.
| Feature | What it does |
|---|---|
| Explain this bet | Purple CTA on every card ΓÇö payouts, implied chance, and what must happen to win |
| How Bettin2Win works | Five-step journey strip for first-time visitors |
| Weather Impact | Outdoor game badges (wind, rain, heat, track) ΓÇö context, not betting advice |
| Basketball matchup cards | One card per game with Moneyline / Spread / Total / Movement tabs |
| Board filters | Beginner-friendly only ┬╖ games with prices ┬╖ live games ┬╖ show all |
| Market ticker | Live index & mega-cap quotes from Yahoo Finance |
| Why isn't everyone rich? | Favorite/underdog/margin explainer in the beginner guide + Explain panel |
| Provider status | Plain-English feed health ΓÇö green when backups succeed |
| Demo mode | Offline sample board for exploring the UI |
A pnpm + Turborepo monorepo:
apps/
web/ React + Vite dashboard
services/
odds-engine/ Polls providers, normalizes odds, detects movement, broadcasts snapshots
ai-analyst/ Turns price movements into plain-language insights
packages/
types/ Shared domain types every layer speaks
.github/workflows/ CI, release, Pages, and health checks
Every provider is hidden behind an adapter that returns the same normalized SportEvent
shape. The frontend never sees raw provider payloads, so adding or swapping a feed stays
inside the engine.
Live app: dacameragirl.github.io/Bettin2Win
Main odds board with best-price comparison across sportsbooks (demo data shown here for a full board).
Control-room grid for every sport feed ΓÇö live odds, real game data, demo, quota, or provider issues.
Shortening and drifting odds with plain-English hints in the right-hand feed.
Plain-English onboarding for first-time visitors, including responsible gambling copy.
Regenerate anytime: pnpm screenshots (requires Chromium via Playwright).
corepack enable
pnpm install
cp .env.example .env
pnpm dev- Web app: http://localhost:5173
- Odds engine: http://localhost:4000
- Health check: http://localhost:4000/health
The desktop launcher created by scripts/install-desktop-icon.ps1 starts the engine, starts
the web app, and opens the dashboard.
| Sport | Provider chain | Auth | Current behavior |
|---|---|---|---|
| Football | The Odds API → Sportsbook API → ESPN NFL odds | ODDS_API_KEY, RAPIDAPI_KEY |
Free ESPN moneylines when The Odds API quota fails |
| Baseball | The Odds API → Tank01 MLB → ESPN MLB odds → MLB Stats | ODDS_API_KEY, RAPIDAPI_KEY |
ESPN + MLB Stats keep boards green without paid keys |
| Basketball | The Odds API → Sportsbook API → ESPN NBA odds | ODDS_API_KEY, RAPIDAPI_KEY |
WNBA/NBA/college scoreboards + DraftKings lines from ESPN |
| Hockey | The Odds API → Sportsbook API → ESPN NHL odds → NHL scoreboard | ODDS_API_KEY, RAPIDAPI_KEY |
Official NHL scoreboard merged with ESPN prices |
| Soccer | BetMiner → football-prediction-api → ESPN soccer odds | RAPIDAPI_KEY |
Predictions + free ESPN 3-way moneylines |
| Golf | ESPN golf | none | Leaderboard and tournament cards from ESPN |
| NASCAR | ESPN NASCAR → TheRundown | THERUNDOWN_API_KEY (optional) |
ESPN race leaderboards; TheRundown when keyed |
| Horse racing | Horse Racing (RapidAPI) → The Racing API | RAPIDAPI_KEY, RACING_API_USERNAME, RACING_API_PASSWORD |
Racecards + results; budgeted for free RapidAPI tier |
| Greyhound | Greyhound Racing UK → GBGB RSS → BetsAPI | RAPIDAPI_KEY, BETSAPI_KEY |
Free GBGB RSS fallback for UK cards |
Put keys in .env only. The file is git-ignored and should not be committed.
- The Odds API:
ODDS_API_KEY - RapidAPI providers:
RAPIDAPI_KEY - TheRundown:
THERUNDOWN_API_KEY - The Racing API:
RACING_API_USERNAME,RACING_API_PASSWORD - BetsAPI:
BETSAPI_KEY
If a key has ever been pasted into chat or screenshots, rotate it.
| Command | What it does |
|---|---|
pnpm dev |
Run all apps/services in watch mode |
pnpm build |
Build every package |
pnpm typecheck |
Type-check the monorepo |
pnpm test |
Run unit tests |
pnpm screenshots |
Capture README screenshots with Playwright |
- Angela ΓÇö product direction, provider setup, testing
- Claude ΓÇö prior implementation work and GitHub workflow
- Dex (Codex) ΓÇö provider fallback fixes, dashboard UI, and repo maintenance
- Grok ΓÇö Weather Impact, matchup grouping, board filters, README & i18n
This is an analytics/media app, not a bookmaker. Provider terms vary by plan and use case; check each provider's rules before redistributing data or using it in a commercial betting workflow.



