A PHP and MySQL based cricket tournament management system inspired by the IPL scorecard and league format. This project is inspired by the Indian Premier League (IPL) scorecard system and aims to closely replicate its league-style format. It uses predefined teams, venues, and scheduling to showcase MySQL proficiency, especially in handling dynamic, CRUD-intensive data operations.
Admins can input critical match details such as participating teams, toss outcomes, venues, inning-wise scores, allowing the system to generate an accurate and dynamic points table.
Additionally, the system maintains match histories for each team, offering comprehensive insights into team performance throughout the tournament.
- Only Super Admin is authenticated to register new admins.
- User authentication ensures secure access to the system.
- Admin users have special access rights, including:
- Creating new matches
- Deleting existing matches if necessary
- Allows users to reset their forgotten passwords.
- Users receive an email with a unique reset link (valid for 15 minutes) implemented using PHPMailer.
- Dynamic email content greets users by their registered name.
- Strike Rate Calculator – Calculates a batsman's strike rate based on runs scored and balls faced.
- Duckworth Lewis Calculator – The DLS Calculator is a work-in-progress and may not provide accurate results due to the lack of sufficient real-world data and scenarios. (under development).
- Reduced Overs Match Support – Admin can mark a match as "Reduced" and specify total overs per side (minimum 5, maximum 19 for T20Is as per ICC) due to weather or interruptions. System adapts ball inputs and logic accordingly.
- Team-wise Match Filter in Admin Dashboard – Admins can quickly filter and manage matches based on selected teams for easier navigation and faster access to match data.
- Built a feature-rich PHP backend system with modular and scalable code structure
- 75+ Git commits focused on evolving and refining the system across the IPL 2025 and 2026 seasons
- Technologies used: PHP, MySQL, HTML, CSS, JavaScript
- Configured CI/CD pipeline using GitHub Actions for automated PHP validation and deployment to Hostinger via FTP
a) Ranks teams primarily based on Points, then by Number of Wins and finally by Net Run Rate (NRR). b) Calculates NRR based on: overs and balls played, runs scored and conceded, with special handling for teams that are all out or affected by reduced overs. Wickets lost is tracked but not used in NRR computation. c) Updates scorecard including matches played, toss and decisions, venues, wins, losses, tied matches, points, and NRR. d) Qualification System (Q Badge): Teams are marked as qualified based on IPL-style progression logic to ensure both live-season prediction accuracy and correct final standings representation:
- Mathematical Qualification: A team is marked Q if it becomes impossible for enough teams to surpass its points based on remaining matches.
- Final Standings Qualification: After all league matches are completed (14 per team), the top 4 teams are automatically marked as qualified.
-
Abandoned Matches
- If a match is abandoned (e.g., due to rain), both teams are awarded 1 point each, ensuring the match is treated as "No Result".
- Two sub-scenarios are handled:
- Abandoned Before Toss: Match abandoned without a toss. #58 (RCB vs KKR)
- Abandoned After Toss: Toss has occurred, but no play was possible. #44 (KKR vs PBKS), #55 (SRH vs DC)
- Validation:
➔ Toss-related fields (i.e., Toss Won By and Decision) are disabled when Toss Status is set to "Match Abandoned Without Toss", ensuring the UI aligns with real-world logic and avoids unnecessary or misleading inputs. ➔ All score input fields are disabled when a match is marked as abandoned, preventing accidental data entry.
-
Tied Matches
- When both teams have equal scores at the end of their innings, a Super Over is triggered to determine the winner. #32 (DC vs RR) followed this scenario and was resolved via Super Over.
- Validation: When scores are tied, an additional hidden field (Super Over Winner selection) becomes visible and must be selected before submission.
-
Reduced Overs For Both Teams
- Matches affected by weather or other interruptions are recorded with a reduced number of overs for both teams and recalculated accordingly. #34 (RCB vs PBKS) was played under reduced overs conditions for both teams.
- Validation:
➔ Users are allowed to enter overs between 5 and 19 only.
➔ Values below 5 or above 19 overs are not permitted, as per ICC standards that a minimum of a 5-overs match must be completed by both teams to get a valid result.
-
Second Innings Reduced Matches (DLS Method)
- In some weather-affected matches, only the second innings is shortened. The DLS (Duckworth-Lewis-Stern) method is applied to set a revised target.
- The team batting second must chase this revised target within the reduced overs. #56 (MI vs GT), only the second innings was reduced, and the DLS method was used for par score calculation.
- Validation: ➔ The user must enter the revised overs and revised target when this condition is selected. ➔ Input fields for revised values are enabled only in this scenario. ➔ If scores are tied at the revised target, the Super Over option must still be selected.
$\text{Overs played} = \text{overs played} + (\text{balls played} / 6)$ $\text{For} = \text{number of runs scored} / \text{number of overs played}$ $\text{Against} = \text{number of runs conceded} / \text{number of overs bowled}$ $\text{Net Run Rate} = \text{For} - \text{Against}$
Note: Unless stated otherwise, innings affected by the following conditions are treated as having consumed the full quota of 20 overs (or the reduced match quota), with balls set to 0. a) General Case: Actual overs and balls faced or bowled are used for NRR calculation. b) Zero Runs Scored: If a team is dismissed for 0 runs, the innings is treated as a completed quota innings. c) All Wickets Lost: If all 10 wickets fall before the allotted overs are completed, the innings is treated as a completed quota innings. d) First Innings (Incomplete Overs Without All Out): If the team batting first does not complete the allotted overs and is not all out, the innings is treated as a completed quota innings. e) Second Innings (Loss Without Being All Out): If the chasing team loses without losing all wickets and before completing the allotted overs, the innings is treated as a completed quota innings. f) Second Innings (Win Without Facing a Legal Delivery): If the chasing team wins without facing a legal delivery (e.g., entirely through wides or no-balls), overs are recorded as 0 and balls as 1 to prevent division-by-zero errors during NRR calculation. This is particularly important when the losing team has no previously accumulated overs data available, such as during its first match of the tournament.
- This project simulates the IPL 2026 season using real match data, with predefined teams, venues, and a schedule.
- All 70 group stage matches have now been completed and recorded in the system.
- Live updates are reflected on the deployed project here, with match data and points table updated in real-time.
- All calculations, including team rankings, Net Run Rate (NRR) up to 3 decimal places, and tie-breaking logic (based on points, wins, and NRR), have been thoroughly implemented and validated.
- The points table generated by this system matches the official IPL 2026 standings exactly, ensuring complete accuracy and consistency.
- All CRUD operations and match updates are functioning seamlessly, with real-time reflections on the live deployment.
- Tie-break handling currently supports points, wins, and NRR only. Advanced IPL tie-breakers (bowling strike rate, etc.) are not implemented due to schema limitations.
- Improved DLS Calculator: Enhance the Duckworth-Lewis-Stern (DLS) calculator by incorporating official tables and historical match data to offer more accurate par scores.
- Mobile Responsiveness & UI Polish: Refine front-end experience, particularly for smaller devices.
- Post-League Phase Extension: Extend the system beyond league-stage matches to include Qualifier 1, Eliminator, Qualifier 2, and the Final, capturing the full tournament journey.
- Recent Match Form Indicator: Display each team’s last five match results (e.g., W, L, NR) in the points table to reflect recent form and momentum.
- Match Score Summary in Points Table: Show concise match summaries (e.g., KKR 131/10 vs RCB 49/10) alongside existing toss and venue details in the points table for better context.
- Object-Oriented Refactoring (OOP Standards): Refactor existing procedural PHP code into an object-oriented structure to improve maintainability, scalability, and adherence to modern coding standards. This includes separating business logic, database handling, and UI rendering into structured classes.
-
Bowling Strike Rate Integration (Full IPL Tie-Break Support): Extend the ranking system to include bowling strike rate as per IPL rules. This will complete the official tie-break hierarchy:
$\text{Points}$ →$\text{Wins}$ →$\text{NRR}$ →$\text{Bowling Strike Rate} = \text{(Balls Bowled} / \text{Wickets Taken)}$
- The web application is hosted at scorecard.siddheshmestri.in
- Real-time IPL standings were referenced using the official IPL Points Table IPL Points Table, while additional scenarios such as tie-breakers and NRR-related edge cases were cross-verified using Cricbuzz Cricbuzz and ESPNcricinfo ESPNcricinfo.
- Explore more about me, my technical background, and other projects on my portfolio website.













