Dugout Value
Baseball research on pitching, hitting, and projections, plus tools for comparing players, contracts, and trade value.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證AI-powered sports betting analytics with smart parlay generation
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
🎲 Odds on Deck - AI Sports Analytics Platform
Portfolio Demo - AI-powered sports analytics for MLB, NFL & NHL with player props, betting edges, and real-time odds tracking.
🏠 Live Dashboard
• Real-time game counts across MLB, NFL, NHL
• Live score tracking with status indicators
• Quick navigation to sport-specific views
• Mobile-responsive design檢視完整 README ↗Portfolio Demo - AI-powered sports analytics for MLB, NFL & NHL with player props, betting edges, and real-time odds tracking.
| Category | Technology |
|---|---|
| Frontend | Next.js 14 (App Router), React 18, TailwindCSS |
| Design system | Custom "terminal" UI (data-dense, dark-first), Geist Sans/Mono |
| Backend | Next.js API Routes |
| Database | Supabase (PostgreSQL) with Row Level Security |
| Server access | Supabase secret key for server-side writes (never exposed to the client) |
| Deployment | Vercel |
QualityScore = (
probability * 0.70 + // Win likelihood (most important)
confidence * 0.20 + // Consistency/reliability
edge * 0.10 // Bonus when available from real data
) * 100
1. Prop Generated → 2. Saved to DB → 3. Game Completes
→ 4. ESPN API Validation → 5. Result Updated → 6. Performance Analysis
CRON_SECRETunsafe-eval is dev-only# Clone repository
git clone https://github.com/anthonyzaino88/odds-on-deck.git
cd odds-on-deck
# Install dependencies
npm install
# Set up environment variables
cp env.example .env.local
# Add your keys to .env.local
DATABASE_URL=postgresql://user:password@host:port/db
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SECRET_KEY=your_supabase_secret_key
ODDS_API_KEY=your_odds_api_key
CRON_SECRET=a_long_random_string
# Run development server
npm run dev
| Variable | Description | Required |
|---|---|---|
DATABASE_URL | PostgreSQL connection string (Prisma) | ✅ |
NEXT_PUBLIC_SUPABASE_URL | Supabase project URL | ✅ |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase anonymous (browser) key — RLS enforced | ✅ |
SUPABASE_SECRET_KEY | Supabase secret key for server-side writes (bypasses RLS) | ✅ |
ODDS_API_KEY | The Odds API key | ✅ |
CRON_SECRET | Shared secret protecting admin/cron write endpoints | ✅ |
| Page | Route | Description |
|---|---|---|
| Home | / | Dashboard with game counts & navigation |
| Games | /games | Today's slate with live scores |
| Game Detail | /game/[id] | Individual game analysis |
| Editor's Picks | /picks | AI-curated recommendations |
| Player Props | /props | Comprehensive prop analytics |
| Parlays | /parlays | Parlay generator & history |
| Validation | /validation | Accuracy tracking dashboard |
| Insights | /insights | Performance analysis |
| DFS | /dfs | Daily fantasy rankings |
| Privacy | /privacy | Privacy policy |
| Terms | /terms | Terms & disclaimer |
On Windows PowerShell, npm run <script> -- --flag can drop the flags. Run ops scripts as node scripts/<file>.js --flag, or npm run x --% -- --flag.
npm run dev # Development server
npm run build # Production build
npm run start # Start production server
npm run lint # Run ESLint
npm run test # Run Jest tests
# Validation & Data
npm run validate # Validate pending props
npm run validate:parlays # Validate saved parlays (after props)
npm run validate:all # Props first, then parlays
npm run regrade:featured # Regrade Featured from current PropValidation
npm run backup # Export all data (CSV/JSON)
# Export
npm run export:csv # Export parlays to CSV
npm run export:stats # Export performance stats
What I Built:
Key Challenges Solved:
MIT License - Feel free to use this project as inspiration!
Anthony Zaino
⭐ Star this repo if you find it interesting!