Smart Training System is a web-based platform designed to assist coaches in monitoring and analyzing player performance in real-time. The application provides key physical statistics, including heart rate, body temperature, and respiratory rate. Utilizing distributed data streams from sensors, the platform enhances real-time decision-making during training and matches.
Key Features:
- Real-Time Data Integration: Seamlessly integrates data from various sensors to provide up-to-the-minute statistics.
- Role-Based Access Control: Ensures that different users have appropriate access levels based on their roles.
- Comprehensive REST API: Facilitates easy integration with the web portal and future mobile applications, allowing for scalability and flexibility.
This system empowers coaches with actionable insights, enabling them to make informed decisions that improve team performance and player development. For detailed information, please refer to the full documentation of the project or to the Project Report.
[click] High resolution architecture diagram

This project had as its main goal to be developed using widely adopted software engineering methodologies to ensure enterprise-level quality and collaboration:
-
Agile Development:
The team followed an agile methodology, using iterative sprints to plan, develop, and deliver increments of the system.- Backlog Management: User stories were prioritized and tracked using GitHub Projects with Scrum boards.
- Sprint Planning and Reviews: Each sprint was associated with specific deliverables, documented through iteration backlogs and meeting minutes.
-
Feature-Branching Workflow:
Development was managed using the GitHub Flow. Feature branches were linked to user stories, and changes were integrated through pull requests with code reviews. -
Container-Based Deployment:
Docker was used to containerize services, ensuring modularity and ease of deployment. The architecture followed a multi-layer approach, with separate containers for data ingestion, processing, and the web interface. -
REST API:
A RESTful API was designed and documented using OpenAPI/Swagger, allowing seamless interaction between system components and external integrations.
As stated, this project was developed in a collaborative environment, using GitHub as the primary platform for version control, issue tracking, and collaboration. Below are some key statistics from the original private repository:
- Commits: 610+
- Branches: 160
- Releases: 9
- Contributors: 4
- Issues: 270+
- Pull Requests: 190+
These statistics highlight the scale of the project and the collaborative effort that went into its development.
To start the Smart Training System application locally, follow these steps:
- Navigate to the
src/directory:
cd src/- Build and run the Docker containers:
docker compose up --build- Access the application in your browser at:
http://localhost
- To stop the application, press
Ctrl + Cin the terminal and run:
docker compose downThe REST API documentation is generated using Swagger and provides detailed information about the available endpoints and request/response formats. To access the Swagger UI:
- On compose file, you need to open the port
8080for thebackendservice, so that the Swagger UI can be accessed. It is closed by default, for security reasons, since we are using Nginx as a reverse proxy. This can be made by uncommenting the following lines (129-130):
# ports:
# - "${BACKEND_LOCAL_PORT}:${BACKEND_CONTAINER_PORT}"- Rebuild and run the Docker containers:
docker compose down
docker compose up --build- Access the Swagger UI in your browser at:
http://localhost:8080/swagger-ui/index.html
The system relies on sensor data to simulate real-time performance metrics. To generate and send this data to Kafka for consumption by the application:
- Navigate to the
data-generationdirectory:
cd src/data-generation/- Activate the Poetry environment:
poetry shell- Install the necessary dependencies:
poetry install- Navigate to the
data_generation/folder:
cd data_generation/- Run the
producer.pyscript to generate and send sensor data. Replace<sensorID_1>and<sensorID_2>with the desired sensor IDs:
python3 producer.py <sensorID_1> <sensorID_2>- To stop the data generation, press
Ctrl + Cin the terminal.
The project includes comprehensive documentation hosted locally. To view the documentation:
- Navigate to the documentation directory:
cd docs/smart-training-system-documentation/- Install the required dependencies:
npm install- Start the documentation server:
npm start- Access the documentation in your browser at:
http://localhost:4000
- To stop the documentation server, press
Ctrl + Cin the terminal.
GitHub Repository (private | source of the project)
Mockup


