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.
Visit the live application at: PropBet Web App
-
🎯 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
- 🏀 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
- 📊 Comprehensive player statistics from Supabase
- 🏀 Previous games performance tracking
- ⚡ Fast and efficient data querying
- 📅 Historical game data
- 🔍 Detailed box scores
- 🎮 Comprehensive admin dashboard
- 📈 User management system
- 🎲 Props management interface
- 💼 Bet status management
- 🔄 Automated props refresh system
- React 18 with TypeScript
- Tailwind CSS for styling
- Lucide React for icons
- Vite for build tooling
- Supabase for database and real-time features
- Firebase Authentication
- Firebase Realtime Database
- The Odds API integration
-
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
- Node.js (v18 or higher)
- npm or yarn
- Supabase account
- Firebase account
- The Odds API key
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
- Clone the repository:
git clone https://github.com/yourusername/propbet.git
cd propbet
- Install dependencies:
npm install
- Start the development server:
npm run dev
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
Picks | Multiplier |
---|---|
2 | 3x |
3 | 5x |
4 | 10x |
5 | 20x |
6 | 37.5x |
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 |
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- NBA data from The Odds API
- Team logos from NBA official resources
- Icons from Lucide React
- Database hosting by Supabase