Week3

Report 3. MVP Development #

UrTraining #

Authors: Ildar Rakiev, Makar Dyachenko, Salavat Faizullin, Egor Chernobrovkin, Alexandra Starikova, Ilona Dziurava, Anisya Kochetkova

Date: June 2025

Team Members #

Team MemberTelegramEmail AddressRole
Ildar Rakiev (Lead)@mescudiwayi.rakiev@innopolis.universityBackend / Frontend
Makar Dyachenko@index099m.dyachenko@innopolis.universityFrontend / Design
Salavat Faizullin@FSA_2005s.faizullin@innopolis.universityBackend
Egor Chernobrovkin@lolyhope.chernobrovkin@innopolis.universityML
Alexandra Starikova@lexandrinnn_ta.nasibullina@innopolis.universityML
Ilona Dziurava@a_b_r_i_c_o_sil.dziurava@innopolis.universityPM
Anisya Kochetkova@anis1305a.kochetkova@innopolis.universityBackend

Implemented MVP features #

Fully Implemented User Flow #

1. Registration → Questionnaire → Personalized Recommendations #

  • The user signs up, completes a brief survey, and receives a tailored list of ranked training programs.

2. General Catalog Access #

  • The user can explore the full catalog of available training programs at any time.

Visualization:
The user flow diagram can be seen below: Flow1 Flow2

Initial MVP scope: #

  • User registration for both trainers and clients
  • User profile questionnaire
  • Basic workout recommendations based on input
  • Workout upload system for trainers (support for text, images, and PDFs)
  • Content processing algorithm to structure uploaded workouts into standardized cards (with descriptions, structure, and tags)
  • Basic recommendation system suggesting workouts based on user profiles
  • Training catalog as a scrollable feed of exercise cards
  • Purchase/save functionality for training programs

Implemented Features: #

1. User Registration for Both Trainers and Clients #

Main page for not-logged users: Main not logged Main page for logged users: Main logged Registration procedure: Client Registration
Login procedure: Login

Frontend Commits:

Backend Commits:

Integration Commits:

2. User Profile Questionnaire #

Survey procedure: Questionnaire Survey step 1: Step1 Survey step 2: Step2 Survey step 3: Step3 Survey step 4: Step3

Frontend Commits:

Backend Commits:

Integration Commits:

3. Workout Recommendations #

Frontend Commits:

Backend Commits:

ML Commits:

[
    {
        "Activity Type": "Yoga",
        "Program Goal": ["Competition Preparation"],
        "Training Environment": ["Pool"],
        "Difficulty Level": "Advanced",
        "Course Duration (weeks)": 2,
        "Weekly Training Frequency": "1-2 times",
        "Average Workout Duration": "45-60 minutes",
        "Age Group": ["Young Adults (18-30)"],
        "Gender Orientation": "For Men",
        "Physical Limitations": [],
        "Required Equipment": ["No Equipment", "Pull-up/Dip Bars"],
        "Course Language": "Other",
        "Visual Content": ["Progress Graphs"],
        "Trainer Feedback Options": ["Personal Consultations"],
        "Tags": [
            "Weight Loss", "Recovery", "Minimal Equipment", "Fat Burning",
            "Anti-Stress", "Explosive Strength", "Energy", "Arms", "Better Sleep"
        ],
        "Average Course Rating": 4.99,
        "Active Participants": 967,
        "Number of Reviews": 456,
        "Certification": {
            "Type": "ISSA",
            "Level": "Master",
            "Specialization": "Yoga"
        },
        "Experience": {
            "Years": 8,
            "Specialization": "Yoga",
            "Courses": 20,
            "Rating": 4.9
        },
        "Trainer Name": "Anna Smirnova",
        "Course Title": "Competition Preparation with Anna Smirnova",
        "training_plan": [
            {
                "title": "Week 1 - Day 1 (Monday, 60 min)",
                "exercises": [
                { "exercise": "Leg swings (front and back)", "repeats": "-", "sets": "1", "duration": "5 min", "rest": "-", "description": "Dynamic warm-up" },
                { "exercise": "Arm circles (forward and backward)", "repeats": "-", "sets": "1", "duration": "-", "rest": "-", "description": "Shoulder warm-up" },
                { "exercise": "Hip openers (lateral and forward)", "repeats": "-", "sets": "1", "duration": "-", "rest": "-", "description": "Hip mobility" },
                { "exercise": "Downward-Facing Dog (Adho Mukha Svanasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Foundational strength" },
                { "exercise": "Plank (Phalakasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Core activation" },
                { "exercise": "Tree Pose (Vrksasana)", "repeats": "-", "sets": "3", "duration": "30 sec (each leg)", "rest": "30 sec", "description": "Balance training" },
                { "exercise": "Triangle Pose (Trikonasana)", "repeats": "-", "sets": "3", "duration": "30 sec (each side)", "rest": "30 sec", "description": "Flexibility and balance" },
                { "exercise": "Seated Forward Fold (Paschimottanasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Hamstring stretch" },
                { "exercise": "Eagle Pose (Garudasana)", "repeats": "-", "sets": "3", "duration": "30 sec (each leg)", "rest": "30 sec", "description": "Balance and joint focus" },
                { "exercise": "Seated forward fold", "repeats": "-", "sets": "1", "duration": "-", "rest": "-", "description": "Cool-down stretch" },
                { "exercise": "Leg stretches (hamstrings and quadriceps)", "repeats": "-", "sets": "1", "duration": "-", "rest": "-", "description": "Post-workout recovery" },
                { "exercise": "Final relaxation", "repeats": "-", "sets": "1", "duration": "5 min", "rest": "-", "description": "Relaxation and breath" }
                ]
            },
            {
                "title": "Week 1 - Day 5 (Friday, 60 min)",
                "exercises": [
                { "exercise": "Downward-Facing Dog (Adho Mukha Svanasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Full-body strength" },
                { "exercise": "Plank (Phalakasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Core stability" },
                { "exercise": "Warrior Pose (Virabhadrasana)", "repeats": "-", "sets": "3", "duration": "30 sec (each leg)", "rest": "30 sec", "description": "Lower body power" },
                { "exercise": "Seated Spinal Twist (Bharadvajasana)", "repeats": "-", "sets": "3", "duration": "30 sec (each side)", "rest": "30 sec", "description": "Spinal flexibility" },
                { "exercise": "Pigeon Pose (Eka Pada Rajakapotasana)", "repeats": "-", "sets": "3", "duration": "30 sec (each leg)", "rest": "30 sec", "description": "Hip opener" },
                { "exercise": "Crow Pose (Bakasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Balance and strength" }
                ]
            },
            {
                "title": "Week 2 - Day 7 (Monday, 60 min)",
                "exercises": [
                { "exercise": "Boat Pose (Paripurna Navasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Core focus" },
                { "exercise": "Side Plank (Vasisthasana)", "repeats": "-", "sets": "3", "duration": "30 sec (each side)", "rest": "30 sec", "description": "Obliques and core" },
                { "exercise": "Bridge Pose (Setu Bandha Sarvangasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Back and glutes" },
                { "exercise": "Headstand (Sirsasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Inversion challenge" },
                { "exercise": "Crow Pose (Bakasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Balance and arm strength" },
                { "exercise": "Tree Pose (Vrksasana)", "repeats": "-", "sets": "3", "duration": "30 sec", "rest": "30 sec", "description": "Balance posture" }
                ]
            }
        ],
        "id": "c217bc40-7553-42f9-90cd-339013cfe3b5"
    }

Integration:

4. Training Catalog #

Catalogue of courses and course card: Catalog

Frontend Commits:

Backend Commits:


Deploy #

Fronted part is deployed here.

Backend part is deployed here.

ML part is deployed here

Updated API documentation #

The updated API documentation can be found by the link: API documentation

This file contains comprehensive API documentation for an application backend. It outlines available RESTful endpoints grouped by functionality, including user registration and authentication, profile and training data management, and trainer-related features. Each endpoint is described with its purpose, method, URL, authentication requirements, request/response formats, and possible error responses. This documentation supports both frontend integration and backend maintenance.


Internal demo notes #

During the demo, we showed the full flow of user registration and login. The basic authentication system is already in place and working smoothly. After signing up, users can fill out a questionnaire, which is an essential part of collecting input for future recommendations. The form is functional, and the collected data is being processed on the backend.

We also walked through the catalog: users can browse available training programs and navigate into specific workout lists. While the connection to the ML model isn’t finished yet, we mentioned that API integration for model-based recommendations is planned and will be added soon.

The feedback was mostly focused on improving the UI, because some parts still look rough and need polishing. It was suggested to refine the layout, make forms more responsive, make text with program description bigger, remove non-functional buttons and ensure the overall design feels more cohesive and user-friendly.


Weekly Progress Report #

During the second week, our team transitioned from planning to early implementation. The primary focus was on expanding the initial requirements, creating design prototypes, and setting up foundational structures for both the frontend and backend.

Team Member (Role)Contribution DescriptionContribution Link
Ildar Rakiev (Backend/Frontend Lead)Implemented the trainer registration and trainee questionnaire features, including frontend forms and backend integration to handle data submission and processingNew data for trainer registration form and trainee questionnaire, Questionnaire filling and sending process
Makar Dyachenko (Frontend/Design)Built core frontend pages including welcome, signup, login, and questionnaire pages; implemented form submission logic, token expiration handling, API integration, and improved course UIData processing via JSON, API connection, Login and Register system, User token expire algorithm, Survey imporvements, Form submit, Improved Course Page
Salavat Faizullin (Backend)Developed backend APIs and business logic for user survey processing and training module management; added database models and ensured backend integration with frontendBackend and frontend integration, Survey endpoints, Processing the user’s form, Add training models, Add training metadata, Fix database container
Egor Chernobrovkin (ML)Deployed and configured a vector database as part of the ML pipeline to enable similarity-based search functionality. Collected raw datasets and prepared training data. Completed the first phase of trainingVector-db deploy, Raw version of the dataset, Raw dataset collection code, Version of the dataset for training on TripletLoss, Code for training
Alexandra Starikova (ML)Developed and integrated the generation pipeline for personalized sport programs using LLM, and contributed initial dataset for training purposesAdd generated sport programs
Ilona Dziurava (PM)Prepared the project report, facilitated two team meetings, coordinated task distribution, maintained the product backlog, organized and led a project demo, and structured the team’s workflow for efficient collaborationThis report :)
Anisya Kochetkova (Backend)Authored backend documentation for defined API endpoints, and define authorization testingAPI documentation, Create user_possible_values.md, Authorization tests

Challenges & Solutions #

One of the biggest challenges this week was making sure the frontend and backend teams worked smoothly together so that data could flow correctly through the app. Since we had to move fast, it was important to stay well-coordinated. To handle this, we made sure each team member knew exactly which part of the work they were responsible for, used mock APIs to start frontend work before the backend was fully ready, and held daily check-ins to quickly catch and fix any problems.

Conclusions & Next Steps #

By the end of Week 3, we successfully delivered the first working version of the Minimum Viable Product (MVP). This includes a fully functional end-to-end user journey, with integrated frontend and backend components, persistent data storage, and a basic authentication flow. Additionally, the ML team delivered the first model iteration, integrated via a backend API for early testing and validation.

An internal demo was conducted to showcase the current state. Feedback helped identify minor usability issues and edge cases in error handling, which are now being tracked for resolution.

Next Steps for Week 4 #

  • Testing: Add unit tests for key frontend components and backend functions. Write integration tests for API routes and aim to cover one full user flow with basic end-to-end tests. The ML team will also start validating their model with test data.

  • CI/CD Setup: Configure a Continuous Integration (CI) pipeline to automatically run tests whenever code is pushed. If time allows, we’ll also set up Continuous Deployment (CD) to automatically deploy new changes to a staging environment after merging to the main branch.

  • Deployment: Set up a staging environment and deploy the current version of the app. If possible, we’ll also connect a custom domain name.

This week will focus on improving the reliability of the project, catching bugs early through testing, and making the deployment process smooth and automated.

We confirm that the code in the main branch:

In working condition. Run via docker-compose.