|
1 |
| -# JavaTraining-Capg |
| 1 | +# 🎾 Tennis Match Prediction Application |
2 | 2 |
|
3 |
| -this repo contains all practices related to basic java and advanced java. |
4 |
| -covering spring , servlet , junit , logger,PMD etc |
| 3 | +A comprehensive Spring Boot application that provides real-time tennis match predictions using AI algorithms. The application analyzes player statistics, head-to-head records, surface performance, and live match data to predict match winners, current game winners, and current set winners. |
| 4 | + |
| 5 | +## 🚀 Features |
| 6 | + |
| 7 | +### Core Prediction Capabilities |
| 8 | +- **Match Winner Prediction**: Predicts the overall winner of a tennis match |
| 9 | +- **Current Game Winner Prediction**: Predicts who will win the current game |
| 10 | +- **Current Set Winner Prediction**: Predicts who will win the current set |
| 11 | + |
| 12 | +### Advanced Analytics |
| 13 | +- **Player Statistics**: Comprehensive player profiles including rankings, surface performance, and recent form |
| 14 | +- **Head-to-Head Records**: Historical match data between players |
| 15 | +- **Live Match Data**: Real-time statistics and score tracking |
| 16 | +- **Surface Analysis**: Performance analysis on different court surfaces (Hard, Clay, Grass) |
| 17 | + |
| 18 | +### Technical Features |
| 19 | +- **RESTful API**: Complete API for all prediction and data operations |
| 20 | +- **Real-time Updates**: Auto-refreshing dashboard with live match data |
| 21 | +- **Modern UI**: Beautiful, responsive web interface |
| 22 | +- **H2 Database**: In-memory database with sample data |
| 23 | +- **Prediction Accuracy Tracking**: Monitor prediction success rates |
| 24 | + |
| 25 | +## 🛠️ Technology Stack |
| 26 | + |
| 27 | +- **Backend**: Spring Boot 3.2.0 |
| 28 | +- **Database**: H2 (In-memory) |
| 29 | +- **Frontend**: Thymeleaf, Bootstrap 5, JavaScript |
| 30 | +- **Build Tool**: Maven |
| 31 | +- **Java Version**: 17 |
| 32 | + |
| 33 | +## 📋 Prerequisites |
| 34 | + |
| 35 | +- Java 17 or higher |
| 36 | +- Maven 3.6 or higher |
| 37 | +- Modern web browser |
| 38 | + |
| 39 | +## 🚀 Quick Start |
| 40 | + |
| 41 | +### 1. Clone and Navigate |
| 42 | +```bash |
| 43 | +cd tennis-prediction-app |
| 44 | +``` |
| 45 | + |
| 46 | +### 2. Build the Application |
| 47 | +```bash |
| 48 | +mvn clean install |
| 49 | +``` |
| 50 | + |
| 51 | +### 3. Run the Application |
| 52 | +```bash |
| 53 | +mvn spring-boot:run |
| 54 | +``` |
| 55 | + |
| 56 | +### 4. Access the Application |
| 57 | +Open your browser and navigate to: |
| 58 | +- **Main Dashboard**: http://localhost:8080/tennis-prediction/ |
| 59 | +- **H2 Database Console**: http://localhost:8080/tennis-prediction/h2-console |
| 60 | + - JDBC URL: `jdbc:h2:mem:tennisdb` |
| 61 | + - Username: `sa` |
| 62 | + - Password: `password` |
| 63 | + |
| 64 | +## 📊 Sample Data |
| 65 | + |
| 66 | +The application comes pre-loaded with: |
| 67 | + |
| 68 | +### Top 10 ATP Players (2024 Rankings) |
| 69 | +1. Novak Djokovic (Serbia) |
| 70 | +2. Carlos Alcaraz (Spain) |
| 71 | +3. Daniil Medvedev (Russia) |
| 72 | +4. Jannik Sinner (Italy) |
| 73 | +5. Andrey Rublev (Russia) |
| 74 | +6. Stefanos Tsitsipas (Greece) |
| 75 | +7. Alexander Zverev (Germany) |
| 76 | +8. Holger Rune (Denmark) |
| 77 | +9. Hubert Hurkacz (Poland) |
| 78 | +10. Taylor Fritz (USA) |
| 79 | + |
| 80 | +### Sample Matches |
| 81 | +- Live matches with real-time statistics |
| 82 | +- Completed matches with full results |
| 83 | +- Scheduled matches for future predictions |
| 84 | + |
| 85 | +### Head-to-Head Records |
| 86 | +- Historical match data between all players |
| 87 | +- Surface-specific performance records |
| 88 | +- Recent match outcomes |
| 89 | + |
| 90 | +## 🔧 API Endpoints |
| 91 | + |
| 92 | +### Predictions |
| 93 | +- `POST /api/predictions/match-winner/{matchId}` - Predict match winner |
| 94 | +- `POST /api/predictions/game-winner/{matchId}` - Predict current game winner |
| 95 | +- `POST /api/predictions/set-winner/{matchId}` - Predict current set winner |
| 96 | +- `GET /api/predictions/match/{matchId}` - Get all predictions for a match |
| 97 | +- `GET /api/predictions/latest/{matchId}/{predictionType}` - Get latest prediction |
| 98 | +- `GET /api/predictions/accuracy` - Get prediction accuracy statistics |
| 99 | + |
| 100 | +### Matches |
| 101 | +- `GET /api/matches` - Get all matches |
| 102 | +- `GET /api/matches/live` - Get live matches |
| 103 | +- `GET /api/matches/{matchId}` - Get match by ID |
| 104 | +- `GET /api/matches/tournament/{tournamentName}` - Get matches by tournament |
| 105 | +- `GET /api/matches/surface/{surface}` - Get matches by surface |
| 106 | +- `POST /api/matches` - Create new match |
| 107 | +- `PUT /api/matches/{matchId}` - Update match |
| 108 | + |
| 109 | +### Players |
| 110 | +- `GET /api/players` - Get all players |
| 111 | +- `GET /api/players/{playerId}` - Get player by ID |
| 112 | +- `GET /api/players/name/{playerName}` - Get player by name |
| 113 | +- `GET /api/players/top` - Get top ranked players |
| 114 | +- `GET /api/players/country/{country}` - Get players by country |
| 115 | +- `GET /api/players/surface/{surface}` - Get players by surface performance |
| 116 | +- `GET /api/players/search/{namePattern}` - Search players by name |
| 117 | +- `POST /api/players` - Create new player |
| 118 | +- `PUT /api/players/{playerId}` - Update player |
| 119 | + |
| 120 | +### Head-to-Head |
| 121 | +- `GET /api/head-to-head/{player1Id}/{player2Id}` - Get head-to-head record |
| 122 | +- `GET /api/head-to-head/player/{playerId}` - Get player's head-to-head records |
| 123 | + |
| 124 | +### Statistics |
| 125 | +- `GET /api/statistics` - Get application statistics |
| 126 | + |
| 127 | +## 🎯 Prediction Algorithm |
| 128 | + |
| 129 | +The prediction system uses a weighted algorithm that considers: |
| 130 | + |
| 131 | +### Factors and Weights |
| 132 | +- **Player Rankings** (15%): Current ATP rankings |
| 133 | +- **Head-to-Head Records** (20%): Historical performance against opponent |
| 134 | +- **Surface Performance** (15%): Win rates on specific surfaces |
| 135 | +- **Recent Form** (15%): Recent match performance |
| 136 | +- **Live Statistics** (25%): Current match statistics |
| 137 | +- **Match Momentum** (10%): Current match flow and score |
| 138 | + |
| 139 | +### Prediction Types |
| 140 | +1. **Match Winner**: Overall match outcome prediction |
| 141 | +2. **Game Winner**: Current game prediction (focuses on serving and immediate momentum) |
| 142 | +3. **Set Winner**: Current set prediction (considers set score and match momentum) |
| 143 | + |
| 144 | +## 🎨 User Interface |
| 145 | + |
| 146 | +### Dashboard Features |
| 147 | +- **Real-time Statistics**: Live match count, prediction accuracy, player rankings |
| 148 | +- **Live Matches**: Current matches with real-time scores and statistics |
| 149 | +- **Top Players**: Ranked list of top players with performance metrics |
| 150 | +- **Recent Predictions**: Latest predictions with confidence scores and reasoning |
| 151 | +- **Auto-refresh**: Dashboard updates every 30 seconds |
| 152 | + |
| 153 | +### Interactive Elements |
| 154 | +- **Prediction Buttons**: One-click predictions for match, game, and set winners |
| 155 | +- **Confidence Indicators**: Visual confidence levels for predictions |
| 156 | +- **Detailed Reasoning**: Explanation of prediction factors |
| 157 | +- **Responsive Design**: Works on desktop, tablet, and mobile devices |
| 158 | + |
| 159 | +## 🔍 Database Schema |
| 160 | + |
| 161 | +### Entities |
| 162 | +- **Player**: Comprehensive player profiles with statistics |
| 163 | +- **Match**: Live match data and scores |
| 164 | +- **HeadToHead**: Historical match records between players |
| 165 | +- **MatchPrediction**: Prediction results with confidence scores |
| 166 | + |
| 167 | +### Key Relationships |
| 168 | +- Players have multiple matches (as player1 or player2) |
| 169 | +- Matches have multiple predictions (different types) |
| 170 | +- Players have head-to-head records with other players |
| 171 | + |
| 172 | +## 🚀 Deployment |
| 173 | + |
| 174 | +### Local Development |
| 175 | +```bash |
| 176 | +# Run with Maven |
| 177 | +mvn spring-boot:run |
| 178 | + |
| 179 | +# Or build and run JAR |
| 180 | +mvn clean package |
| 181 | +java -jar target/tennis-prediction-app-1.0.0.jar |
| 182 | +``` |
| 183 | + |
| 184 | +### Production Deployment |
| 185 | +1. Build the application: `mvn clean package` |
| 186 | +2. Deploy the JAR file to your server |
| 187 | +3. Configure database connection (switch from H2 to production database) |
| 188 | +4. Set up external API keys for live data feeds |
| 189 | + |
| 190 | +## 🔧 Configuration |
| 191 | + |
| 192 | +### Application Properties |
| 193 | +```properties |
| 194 | +# Server Configuration |
| 195 | +server.port=8080 |
| 196 | +server.servlet.context-path=/tennis-prediction |
| 197 | + |
| 198 | +# Database Configuration |
| 199 | +spring.datasource.url=jdbc:h2:mem:tennisdb |
| 200 | +spring.datasource.username=sa |
| 201 | +spring.datasource.password=password |
| 202 | + |
| 203 | +# Prediction Settings |
| 204 | +tennis.prediction.model.threshold=0.6 |
| 205 | +tennis.prediction.update-interval=30000 |
| 206 | +``` |
| 207 | + |
| 208 | +## 📈 Future Enhancements |
| 209 | + |
| 210 | +### Planned Features |
| 211 | +- **Machine Learning Integration**: Advanced ML models for better predictions |
| 212 | +- **External API Integration**: Real-time data from FlashScore, ATP, etc. |
| 213 | +- **User Authentication**: User accounts and personalized predictions |
| 214 | +- **Mobile App**: Native mobile application |
| 215 | +- **Advanced Analytics**: Detailed statistical analysis and visualizations |
| 216 | +- **Tournament Brackets**: Tournament prediction and bracket management |
| 217 | + |
| 218 | +### Technical Improvements |
| 219 | +- **Microservices Architecture**: Split into separate services |
| 220 | +- **Real-time WebSocket**: Live updates via WebSocket |
| 221 | +- **Caching Layer**: Redis for improved performance |
| 222 | +- **Containerization**: Docker support for easy deployment |
| 223 | + |
| 224 | +## 🤝 Contributing |
| 225 | + |
| 226 | +1. Fork the repository |
| 227 | +2. Create a feature branch |
| 228 | +3. Make your changes |
| 229 | +4. Add tests for new functionality |
| 230 | +5. Submit a pull request |
| 231 | + |
| 232 | +## 📝 License |
| 233 | + |
| 234 | +This project is licensed under the MIT License - see the LICENSE file for details. |
| 235 | + |
| 236 | +## 🆘 Support |
| 237 | + |
| 238 | +For support and questions: |
| 239 | +- Create an issue in the repository |
| 240 | +- Check the API documentation |
| 241 | +- Review the sample data and configurations |
| 242 | + |
| 243 | +## 🎯 Quick Test |
| 244 | + |
| 245 | +1. Start the application |
| 246 | +2. Navigate to http://localhost:8080/tennis-prediction/ |
| 247 | +3. View the live matches |
| 248 | +4. Click "Predict Winner" on any live match |
| 249 | +5. See the prediction with confidence score and reasoning |
| 250 | + |
| 251 | +The application is ready to use immediately with sample data and working predictions! |
0 commit comments