React-based Video Management System

Job ID: 38735609

Budget: $1,500 – $3,000 USD

I need to complete a project managing short videos in React, node.js, and MySQL DB.

aspects:
* Users auth and managing history
* Login through SMS verification
* Managing video storage on AWS S3 buckets
* An admin control panel uploads video files
* Merge short videos by categories
* Provide basic video editing tools for trimming, merging, and adding effects.

This is the specific documentation:

NOTE: you will work with a Backend developer to help you with the storage managing and the API's requests.

Backend Requirements for Cognitive Workout App
1. Video Categorization
• Types of Cognitive Workout Videos:
o Warm-up: Short exercises to warm up joints and muscles.
o Coordination: Tasks that enhance coordination.
o Story: Engaging narratives that stimulate cognitive processing and comprehension.
o Dance: Rhythm or pattern-based exercises for memory and coordination.
o Gym: More intense physical training
o Main Exercise: The core cognitive workout, based on the user’s mental training needs, including a short test
• Video Attributes:
o Each video should have attributes:
 Duration, difficulty level, type (solo, couple, or group), cognitive area focus (memory, coordination, logic, etc.).
 A timestamp of when the video was last viewed.
 Video duration must be stored to assist in time-based session planning.
2. Time Management and Exercise Flow
• Time-Based Video Selection:
o A full workout session is structured as follows and lasts approximately 38 minutes:
1. Warm-up (3 min)
2. Coordination exercise (3 min)
3. Four main exercises (7*4=24 min)
4. Dance exercise (5 min)
5. Gym exercise (3 min)
o Minimum time (7 minutes): If the user only has 7 minutes, the session will include one main exercise.
o More time available:
1. If more than 7 minutes is available, the session should first add a warm-up before the main exercise.
2. With additional time, a coordination exercise will be included right after the warm-up.
3. If further time is available, add a dance exercise after the main exercise.
4. If there’s more time, add a gym exercise after the dance.
5. For even longer sessions, add additional main exercises after the first one, until the session reaches the allocated time.
o The app must always prioritize including the main exercise, adjusting the other components accordingly based on the time available.
3. Video Selection Logic
• Selection Pool:
o The app should pull videos based on the user's input (time, difficulty, solo/couple/group) and always include a main exercise.
• Seen vs. New Videos:
o Ensure 70% of videos are new (or not recently seen).
o 30% should be videos the user has seen before (or seen a long time ago).
o Use timestamps to track video history and manage familiarity vs. novelty.
4. User Entry & Phone Verification
• Phone Number Registration:
o The main screen prompts users to enter their phone number.
o Users receive an SMS with a verification code.
o The user inputs the code back into the app for authentication.
• User Profile Creation:
o After verification, new users are prompted to provide additional details:
 Name, age, cognitive goals (e.g., memory improvement, problem-solving, etc.), preferred difficulty, and group type (solo/couple/group).
o This information helps the app tailor future workouts to the user’s preferences.
• Returning Users:
o Recognized via their phone number, allowing the app to pull their existing profile and tailor sessions based on their past usage and progress.
5. User Data and Workout History
• Track each user's history of completed workouts, including:
o Video usage frequency, timestamps, and performance in tests (optional).
o Ensure balanced workout sessions with both familiar and new exercises based on this history.
6. Admin Panel for Video Uploads
• Admins must be able to upload new videos with ease.
• Video metadata (duration, difficulty, type, target group, cognitive focus) is required upon upload.
• New videos are automatically added to the selection pool for users.

The UI should be feature-rich and detailed. The UI should be basic, focusing on functionality over design complexity.
Related categories: MySQL Node.js React.js