EasyMatch is a website that helps you organize padel, tennis, beach volleyball, or 7v7 football matches — either with friends (private) or with strangers (public) at a similar skill level. It also includes a live chat feature to communicate with other players or to get help from clubs or the site’s administrators.
In this document, only the functional and technical objectives of the EasyMatch application have been defined. Development has been initiated, but the implementation is not yet functional.
The web page aims to make organizing sports matches easier by providing a centralized platform where players can search for, create, and join games at partnered clubs. It also seeks to improve communication between players and clubs through an integrated chat system.
- The system should allow users to create public matches (open to anyone) or private matches (for friends only), specifying the sport, date, and time.
- The system should allow users to search for and join public matches at partnered clubs filtering by sport, skill level, date, city...
- The system should allow users to leave those matches before they are closed, meaning before all spots have been filled.
- The system should allow users to view and/or edit their basic information (profile picture, username, match history, skill-level graph, etc.). Likewise, the system should allow them to delete their account.
- The system should allow users to add the result of a completed match, which must then be validated by both pairs of players.
- The system should include a real-time communication channel that allows players to chat with each other, as well as with club staff and site administrators, to resolve questions or issues.
The website will be implemented using technologies that are well-established both academically and professionally, like Spring Boot for the backend, Angular for the frontend, and MySQL as the database management system. Additionally, software quality will be ensured through continuous integration and deployment using GitHub Actions, along with a set of automated tests that guarantee the reliability of the core functionalities.
- The system should follow a SPA (Single Page Application) architecture, using the Angular framework for frontend development.
- The system should provide a backend based on Java with Spring Boot, implementing a REST API to handle business logic.
- The system should have a continuous integration and deployment (CI/CD) pipeline, set up with GitHub Actions to automate the build, testing, and deployment processes.
- The system should use a MySQL relational database to store structured information (entities).
- The system should have a GitHub repository for version control and software lifecycle management.
- The system should include unitary tests developed with JUnit and Mockito to ensure the correctness of the backend logic.
- The system should implement integration tests using Rest Assured to validate communication with the REST API.
- The system should carry out end-to-end tests with Selenium to verify the proper functioning of the frontend from the user's perspective.
- The system must be packaged in Docker containers to ensure portability, facilitate deployment, and guarantee consistency across development, testing, and production environments.
- The system should implement real-time communication via WebSockets to enable the chat feature.
The development of the website will be carried out following an incremental and iterative approach, which allows the system to be built in successive phases, delivering functional versions at the end of each one.
-
Phase 1 (1st to September 15th) : Definition of functionalities In this phase, the functional and technical objectives of the website have been gathered and documented. The general functionality description is located in the Objectives section specifically in the Functional objectives subsection. In contrast, the detailed description of each functionality and its intended audience can be found in the Detailed functionalities section.
-
Phase 2 (September 15th to October 15th) : Configuration of technologies and development tools with quality controls that are carried out periodically
-
Phases 3, 4 & 5 (October 15th to April 15th): Iterative and incremental development of the application. At the end of each phase, a new release will be published
-
Phase 6 (April 15th to May 15th): Writing the final report
-
Phase 7 (May 15th to June th): Preparation of the presentation
These allow the website to fulfill its minimum purpose — organizing matches.
- View basic information of the clubs associated with the platform (name, address, available facilities, contact information, etc.).
- Search for open matches but not join them.
- Create public and private matches, specifying sport, date, time, and location (club or private court).
- Search and join open matches, filtering by sport, date, time, and city.
- Leave a match before the number of spots is filled.
- Manage basic profile information, including profile photo, username, match history, level progression, and the option to delete the account.
- Validate and maintain club information (additions, removals, and updates).
- Supervise user-created matches to ensure proper use of the platform.
These enhance the user experience but are not essential for the system to function.
- View match history (past games played).
- See player level progression through charts.
- Edit personal information, such as profile photo, username, phone number, or email address.
- Access and review the global activity history, including matches, users, and messages.
These represent the most complex and interactive features, providing full platform functionality.
- Record match results, which must be validated by both player pairs.
- Chat in real time with other players, club staff, or administrators.
- Advanced skill-level algorithm that adjusts player ratings based on results and opponents’ levels.
- Participate in chat as moderator or support.
- Manage user-reported incidents, such as unsportsmanlike behavior or result manipulation.
This section shows a preliminary design of each screen, with a brief description of each and the pages that can be accessed from them.
- Description: shows the available matches along with their information such as price, sport,... with filters to select your preferences. Includes a header that contains the shortcuts: Open Matches, Clubs and Profile.
- Navigation: from this screen you can access Screen 2 and 3 clicking on the shortcuts of the header.
- Description: displays the clubs associated with the website, alongside with their basic information (location, telephone...). Includes the header and filters to select preferences for where to play.
- Navigation: from this screen you can access Screen 1 and 3 clicking on the shortcuts of the header.
- Description: Brief explanation of the screen, its purpose, and main functions.
- Navigation: from this screen you can access Screen 1 and 2 clicking on the shortcuts of the header.
The website’s data model is composed of the entities User, Match, Club y Message. Below, their attributes and relationships are shown in the following diagram:
The table below details the permissions by user type (anonymous, registered and admin):
The entities that can have one or more images associated are Club and User. Each user can upload a profile picture, and clubs can upload images of their facilities.
Player skill progression across different sports will be displayed using line charts.
WebSockets will be used as a complementary technology to implement real-time chat between players, clubs, and administrators.
An advanced algorithm will be implemented to dynamically calculate player skill levels, adjusting the score based on the level difference with opponents.
This web development is carried out in the context of the Degree’s Final Project for the Computer Engineering degree, taught at the Escuela Técnica Superior de Ingeniería Informática (ETSII) of the Universidad Rey Juan Carlos, at its Móstoles campus. The project is being developed by the student Daniel Muñoz Martínez, under the supervision of professor Michel Maes Bermejo.


