A comprehensive Spring Boot web application that simulates the entire UEFA Champions League tournament, from group stage draw to the final match.
This Java-based web application provides a complete simulation of the UEFA Champions League tournament structure. Users can experience the excitement of Europe's premier club football competition through automated match simulations, knockout rounds, and realistic team matchups.
-
Tournament Structure:
- Complete Champions League format simulation
- Group stage draw with realistic constraints
- Knockout rounds: Round of 16, Quarter-finals, Semi-finals, Final
- Automated match results generation
-
Team Management:
- Real European club teams with ratings
- CSV-based team data (country codes, names, rankings)
- Dynamic team standings calculation
-
Match Simulation:
- Automated score generation based on team strength
- Realistic match outcomes
- Tournament progression tracking
-
Web Interface:
- Clean, responsive UI with Thymeleaf templates
- Real-time tournament updates
- Stadium background for immersive experience
- Step-by-step tournament progression
- Java 17
- Spring Boot 2.6.4
- Spring Web MVC
- Spring Boot DevTools
- Maven - Dependency management and build tool
- Thymeleaf - Server-side template engine
- HTML5 & CSS3
- Bootstrap (implied from templates)
- OpenCSV 5.6 - CSV file processing for team data
- H2 Database - In-memory database for runtime
- iTextPDF 5.0.6 - PDF generation capabilities
- Spring Boot DevTools - Hot reload during development
- Maven - Build automation
- JUnit & Spring Test - Testing framework
uefa_cl_simulator/
src/
main/
java/com/knf/dev/CL_Simulator/
Application.java # Spring Boot entry point
controller/
MatchController.java # Match simulation logic
TeamController.java # Team management
entity/
Match.java # Match entity
Team.java # Team entity
TeamStandings.java # Standings calculation
service/
MatchService.java # Match business logic
TeamService.java # Team business logic
resources/
application.properties # App configuration
data/
teams.csv # Team data (country, name, rating)
static/
images/
stadium.jpg # Background image
templates/ # Thymeleaf HTML templates
index.html # Home page
team-list.html # Team overview
draw.html # Group stage draw
matches.html # Match results
knockouts.html # Knockout overview
roundOf16.html # Round of 16
quarterfinals.html # Quarter-finals
semifinals.html # Semi-finals
final.html # Final match
comman/
footer.html # Shared footer
test/ # Unit tests
pom.xml # Maven configuration
.gitignore # Git ignore rules
LICENSE # Project license
- Java 17 or higher
- Maven 3.6+
- IDE (IntelliJ IDEA, Eclipse, or VS Code)
- Clone the repository:
git clone https://github.com/BrandyBrandt/uefa-cl-simulator.git
cd uefa-cl-simulator- Build the project:
mvn clean install- Run the application:
mvn spring-boot:run- Open your browser and navigate to:
http://localhost:8080
- Start Tournament: Navigate to the home page
- View Teams: See all participating teams and their ratings
- Draw Phase: Simulate the group stage draw
- Group Matches: View simulated group stage results
- Knockout Rounds: Progress through:
- Round of 16
- Quarter-finals
- Semi-finals
- Final
- View Results: See match outcomes at each stage
Teams are loaded from teams.csv with the following format:
country_code;team_name;rating
gb-eng;Liverpool FC;2345
es;Real Madrid;2380
de;Bayern Munich;2400- country_code: ISO country code (e.g., gb-eng, es, de)
- team_name: Full team name
- rating: Team strength rating (higher = stronger)
- Model: Entity classes (Team, Match, TeamStandings)
- View: Thymeleaf templates
- Controller: Spring MVC controllers (MatchController, TeamController)
- MatchService: Handles match simulation logic
- TeamService: Manages team data and CSV parsing
- Teams loaded from CSV on startup
- Controllers handle HTTP requests
- Services process business logic
- Views render dynamic content with Thymeleaf
Run tests with Maven:
mvn testCreate an executable JAR:
mvn clean package
java -jar target/librarymanagementsystem-0.0.1-SNAPSHOT.jar- Uses team ratings to calculate match outcomes
- Probabilistic score generation
- Home/away considerations (if implemented)
- Ensures teams from same country don't meet early (if implemented)
- Follows official UEFA Champions League rules
- Automatic progression to next rounds
(Tournament simulation interface with stadium background)
Aleksander Brandt
This project was created as part of a Java programming course, demonstrating:
- Spring Boot application development
- MVC architecture implementation
- RESTful controller design
- Thymeleaf template integration
- CSV data processing
- Business logic implementation
- Object-oriented programming principles
See the LICENSE file for details.
- Add user authentication
- Implement match statistics
- Add player data and transfers
- Real-time match commentary
- Export tournament results to PDF
- Database persistence for tournament history
- API endpoints for external integrations
- Mobile-responsive UI improvements
This is an academic project, but suggestions and improvements are welcome!
For questions or feedback about this project, please reach out through GitHub.
Made with and for football fans everywhere