A React Native Expo app that allows users to join watch-party chat rooms for live soccer matches, make custom over/under bets with friends, and track live scores and match events.
- Live Match Display: View currently active soccer matches
- Watch Rooms: Create or join watch rooms using 6-digit codes
- Real-time Chat: WebSocket-powered chat functionality
- Betting System: Over/Under betting system with 1000 starting points
- Live Score Updates: Real-time match events and statistics
- Responsive Design: Clean, modern UI with dark/light mode support
HackGT/
├── server/ # Node.js backend server
│ ├── server.js # WebSocket and REST API server
│ └── package.json # Backend dependencies
├── SideBet/ # React Native Expo app
│ ├── app/ # Expo Router screens
│ ├── components/ # Reusable components
│ ├── constants/ # Theme and color constants
│ └── package.json # Frontend dependencies
├── livescore.json # Sample live match data
├── match_events.json # Sample match events data
└── endpoints.txt # API endpoint documentation
cd server
npm install
npm startThe server will start on http://localhost:3001 with WebSocket support.
cd SideBet
npm install
npm startChoose your platform:
- Press
ifor iOS simulator - Press
afor Android emulator - Press
wfor web browser - Scan QR code with Expo Go app for physical device
GET /api/matches/live- Get all live matchesGET /api/matches/:matchId/events- Get match eventsPOST /api/rooms/create- Create a new watch roomPOST /api/rooms/join- Join existing roomGET /api/rooms/:roomCode- Get room details
join-room- Join a specific roomsend-message- Send chat messagepropose-bet- Create new betaccept-bet- Accept existing betnew-message- Receive new chat messagenew-bet- Receive new bet proposalbet-accepted- Receive bet acceptance notification
- Start the Backend: Run the Node.js server
- Launch the App: Start the Expo app
- View Live Matches: Browse currently active soccer matches
- Create Watch Room: Click "Start Watch Room" for any match
- Join Watch Room: Use "Join Watch Room" with a 6-digit code
- Chat: Send messages in real-time with other users
- Place Bets: Create Over/Under bets on goals scored
- Accept Bets: Accept bets from other users
- Track Live Score: View real-time match events and statistics
- Real-time messaging via WebSocket
- System notifications for user joins
- Special formatting for bet-related messages
- Message timestamps and user identification
- Over/Under bets on team goals
- 1000 starting points per user
- Bet proposals visible to all room members
- First-to-accept system for bet matching
- Point transfer system (to be implemented)
- Real-time match statistics
- Goal tracking and events timeline
- Yellow/red card tracking
- Substitution notifications
- Auto-refresh every 30 seconds
- Node.js - Runtime environment
- Express.js - Web framework
- Socket.IO - WebSocket communication
- CORS - Cross-origin resource sharing
- UUID - Unique identifier generation
- React Native - Mobile framework
- Expo - Development platform
- Expo Router - File-based navigation
- Socket.IO Client - WebSocket communication
- React Native Tab View - Tab navigation
- TypeScript - Type safety
The app uses a centralized design system with:
- Primary Color: #143a81 (Dark Blue)
- Secondary Color: #fabb17 (Yellow/Orange) in light mode, #4A90E2 (Blue) in dark mode
- Consistent Spacing: 4px grid system
- Typography: Hierarchical text styles
- Component Styles: Reusable button, card, and input styles
- Uses mock data from
livescore.jsonandmatch_events.json - No authentication required (users join with display names)
- In-memory state storage (no database)
- Designed for local development and testing
- WebSocket connections handle room-based messaging
- Bet resolution logic ready for implementation
- Automatic bet resolution based on match outcomes
- User authentication and persistent accounts
- Database integration for data persistence
- Push notifications for bet updates
- Enhanced match statistics and analytics
- Multiple bet types beyond Over/Under goals