A modern, responsive web application for comparing sports betting odds across different sportsbooks. Built with cutting-edge technologies and comprehensive testing.
- Multi-Sport Support: NBA, NFL, NHL, MLB, MMA, and more
- Odds Comparison: View and compare odds across multiple sportsbooks
- Betting Markets: Moneyline, Spread, Points, and Player Props
- Real-time Data: Live odds updates from sportsbook APIs
- Dynamic Market Selection: Choose from various player prop markets
- Real-time Odds: Live player prop odds from multiple bookmakers
- Interactive UI: Modern combobox interface for easy navigation
- Comprehensive Coverage: Batter hits, passing yards, and more
- Responsive Design: Mobile-first approach with Tailwind CSS
- Dark/Light Theme: Toggle between themes for user preference
- Intuitive Navigation: Easy switching between sports and markets
- Accessibility: ARIA labels and keyboard navigation support
- Next.js 14 - React framework with App Router
- React 18 - Latest React with concurrent features
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first CSS framework
- Radix UI - Accessible component primitives
- SWR - Data fetching and caching
- UUID - Unique identifier generation
- Class Variance Authority - Component variant management
- Cypress 14 - End-to-end testing
- ESLint - Code quality and consistency
- TypeScript - Static type checking
- pnpm - Fast, disk space efficient package manager
- PostCSS - CSS processing
- Autoprefixer - CSS vendor prefixing
Comprehensive test coverage including:
// Example test structure
describe("Sportsbook Odds", () => {
it("loads and displays odds", () => {
cy.visit("/");
cy.get('[data-cy="odds-ml-item"]').should("be.visible");
});
it("navigates between sports correctly", () => {
// Navigation tests
});
});
describe("Player Props", () => {
it("displays player props for selected markets", () => {
// Player props functionality tests
});
});- โ Page Loading: Homepage and odds pages
- โ Navigation: Sport switching and market navigation
- โ Player Props: Market selection and data display
- โ Responsive Design: Mobile and desktop interactions
- โ Data Integration: API responses and error handling
- Node.js 18+
- pnpm (recommended) or npm
# Clone the repository
git clone https://github.com/yourusername/sportsbook-odds-comparer.git
cd sportsbook-odds-comparer
# Install dependencies
pnpm install
# Start development server
pnpm devpnpm dev # Start development server
pnpm build # Build for production
pnpm start # Start production server
pnpm lint # Run ESLint
pnpm test # Run Cypress tests
pnpm cypress:open # Open Cypress test runnersportsbook-odds-comparer/
โโโ src/
โ โโโ app/ # Next.js App Router
โ โ โโโ odds/ # Odds comparison pages
โ โ โ โโโ [sport]/ # Dynamic sport routes
โ โ โ โโโ playerProps/ # Player props functionality
โ โ โโโ layout.tsx # Root layout
โ โโโ components/ # Reusable components
โ โ โโโ ui/ # Base UI components
โ โ โโโ OddsTable.tsx # Main odds display
โ โ โโโ PlayerProp.tsx # Player props component
โ โ โโโ ThemeToggle.tsx # Theme switching
โ โโโ lib/ # Utilities and API
โโโ cypress/ # E2E testing
โโโ public/ # Static assets
โโโ .github/workflows/ # CI/CD pipelines
- Automated Testing: Runs Cypress tests on every deployment
- Quality Checks: ESLint and TypeScript validation
- Deployment Integration: Tests against live deployed applications
- Smart Caching: Optimized dependency and build caching
- Event-Driven: Triggers on successful deployments
- E2E Testing: Comprehensive testing against live applications
- Fail-Fast: Immediate feedback on deployment issues
- Resource Efficient: Optimized for speed and cost
- Personal Betting Tracker: Track your bets and performance
- Daily Picks: Curated betting recommendations
- Sports Bettor Profiles: Featured handicapper picks
- Advanced Analytics: Betting performance insights
- Mobile App: Native mobile experience
- Performance Optimization: Core Web Vitals improvements
- SEO Enhancement: Better search engine optimization
- PWA Features: Progressive web app capabilities
- Real-time Updates: WebSocket integration for live odds
This is a personal project, but contributions are welcome!
- Follow TypeScript best practices
- Write comprehensive tests for new features
- Maintain accessibility standards
- Use conventional commit messages
Visit the live application: https://sportsbook-odds-comparer.vercel.app/
This project is for personal use and educational purposes.
Built with โค๏ธ using Next.js, React, and modern web technologies