PropBet
PropBet is a modern React-based NBA sports betting web app featuring real-time player props, dynamic leaderboards, and innovative betting mechanics.
Install / Use
/learn @potternate/PropBetREADME
PropBet
PropBet is a modern web application for sports betting enthusiasts, focusing on NBA player props. Built with React, TypeScript, and Supabase, it offers a seamless and engaging betting experience with real-time updates and unique betting mechanics.
Live Demo
Visit the live application at: PropBet Web App
Features
Core Betting Features
-
🎯 Power Play System
- 2-6 picks with higher multipliers
- All picks must hit to win
- Multipliers up to 37.5x
-
💪 Flex Play System
- 3-6 picks with partial win payouts
- Get paid even if you miss 1-2 picks
- Multipliers up to 25x for all correct
User Experience
- 🏀 Real-time NBA player props with live odds
- 📊 Dynamic leaderboard system
- 👤 User authentication and profiles
- 💰 Virtual currency system
- 📱 Responsive design for all devices
- 🔄 Real-time updates
- 📈 Historical player performance data
Player Statistics
- 📊 Comprehensive player statistics from Supabase
- 🏀 Previous games performance tracking
- ⚡ Fast and efficient data querying
- 📅 Historical game data
- 🔍 Detailed box scores
Admin Features
- 🎮 Comprehensive admin dashboard
- 📈 User management system
- 🎲 Props management interface
- 💼 Bet status management
- 🔄 Automated props refresh system
Technology Stack
Frontend
- React 18 with TypeScript
- Tailwind CSS for styling
- Lucide React for icons
- Vite for build tooling
Backend & Services
- Supabase for database and real-time features
- Firebase Authentication
- Firebase Realtime Database
- The Odds API integration
Database Schema
Tables
-
games- Stores game informationid: Game identifierdate: Game datehome_team_id: Home team identifieraway_team_id: Away team identifier
-
box_scores- Player performance statisticsid: Box score identifierplayer_id: Player identifiergame_id: Game identifierpoints: Points scoredrebounds: Total reboundsassists: Total assistssteals: Total stealsblocks: Total blocksminutes: Minutes playedopponent: Opponent team
-
players- Player informationid: Player identifiername: Player nameteam_id: Current team identifier
-
teams- Team informationid: Team identifiername: Team name
Getting Started
Prerequisites
- Node.js (v18 or higher)
- npm or yarn
- Supabase account
- Firebase account
- The Odds API key
Environment Setup
Create a .env file in the root directory with:
VITE_FIREBASE_API_KEY=your_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_FIREBASE_DATABASE_URL=your_database_url
VITE_ODDS_API_KEY=your_odds_api_key
VITE_ADMIN_EMAIL=admin_email
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
Installation
- Clone the repository:
git clone https://github.com/yourusername/propbet.git
cd propbet
- Install dependencies:
npm install
- Start the development server:
npm run dev
Project Structure
src/
├── components/ # React components
│ ├── BetSlip.tsx # Betting interface
│ ├── Leaderboard.tsx# User rankings
│ ├── LoginPage.tsx # Authentication
│ ├── Navbar.tsx # Navigation
│ ├── Profile.tsx # User profile
│ ├── PropCard.tsx # Prop display
│ └── PropTabs.tsx # Prop filtering
├── contexts/ # React contexts
│ └── AuthContext.tsx# Authentication state
├── lib/ # Utilities
│ ├── database.ts # Firebase operations
│ ├── firebase.ts # Firebase config
│ ├── supabase.ts # Supabase client
│ ├── database.types.ts # Supabase types
│ ├── playerIds.ts # NBA player IDs
│ ├── playerTeams.ts# Player team mappings
│ └── teamLogos.ts # Team logo URLs
└── types.ts # TypeScript definitions
Betting System Details
Power Play
| Picks | Multiplier | |-------|------------| | 2 | 3x | | 3 | 5x | | 4 | 10x | | 5 | 20x | | 6 | 37.5x |
Flex Play
| Picks | All Correct | 1 Miss | 2 Miss | |-------|-------------|---------|---------| | 3 | 2.25x | 1.25x | - | | 4 | 5x | 1.5x | - | | 5 | 10x | 2x | 0.4x | | 6 | 25x | 2x | 0.4x |
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- NBA data from The Odds API
- Team logos from NBA official resources
- Icons from Lucide React
- Database hosting by Supabase
Related Skills
bluebubbles
335.8kUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
node-connect
335.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
335.8kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
frontend-design
82.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
