Inspiration

Physical therapy recovery is difficult to do correctly at home. Many patients perform exercises with poor form due to the lack of real time guidance, which increases the risk of re injury and slows progress. In person PT sessions are expensive and typically limited to one or two visits per week, leaving patients unsupported between appointments.

PhysioVision turns any webcam into an AI powered physical therapy coach. It analyzes movement in real time, provides immediate feedback on form and pacing, and tracks progress over time so patients can recover safely and consistently outside the clinic.

What it does

PhysioVision watches a user perform physical therapy exercises through their camera and gives live coaching cues, rep counting, and quality scoring.

It:

  • Tracks 33 body landmarks using real time pose estimation
  • Automatically counts reps with exercise specific logic
  • Gives instant cues like "Lower down" or "Stand up" based on movement phase
  • Scores each set on range of motion and tempo consistency
  • Stores workout history so users can track improvement over time
  • Supports full routines with multiple exercises, sets, and target reps

The UI is intentionally minimal. Users see one clear instruction at a time so they can focus on form instead of reading text while moving.

How we built it

PhysioVision is a real time web app built around pose estimation, signal processing, and custom movement analysis.

Tech stack

  • Frontend: React, TypeScript, Vite, Tailwind CSS, shadcn ui
  • Pose tracking: Google MediaPipe Pose Landmarker at approximately 30 fps
  • Backend: Node.js with Express
  • Database: MongoDB for users, routines, and workout history
  • Authentication: JWT based authentication

Exercise analyzers

Each exercise has its own analyzer with custom math and thresholds rather than generic joint angle rules.

  • Squats

    • Uses relative knee to hip vertical distance instead of angles
    • More robust across body types and camera distances
    • Signal is normalized to a 0 to 1 depth score and smoothed to reduce jitter
  • Pushups

    • Tracks elbow bend angle to detect up and down phases
    • Requires a stable plank position before reps can start
    • Uses head drop distance to ensure sufficient depth
  • Jumping jacks

    • Detects arm height relative to the head
    • Measures ankle spread normalized by hip width
    • Combines arm and leg openness into a single continuous signal

Rep counting logic

Reps are detected using a custom state machine instead of simple threshold crossings.

  • Movement signals are normalized to a 0 to 1 range
  • Each exercise has tuned thresholds for up and down phases
  • Stability is enforced by requiring multiple consecutive frames past a threshold
  • Minimum time between reps prevents double counting from jitter or pauses

This approach avoids false positives when users move slowly, pause, or shake slightly.

Challenges we ran into

  • Rep detection reliability

    • Joint angle based methods failed across body types and camera setups
    • Switching to relative landmark distances significantly improved robustness
  • State synchronization

    • Early versions had rep counting and feedback cues out of sync
    • Fixing this required careful phase logic and signal inversion
  • Overly harsh tempo scoring

    • Fixed millisecond thresholds punished consistent reps
    • Percentage based tolerance scaled naturally with user speed
  • Unreadable feedback

    • Positive messages flashed too quickly during workouts
    • Added timed message holds so reinforcement is visible
  • System complexity

    • Coordinating real time pose data, rep counting, UI updates, and backend persistence required careful state management

Accomplishments that we're proud of

  • Accurate real time rep counting at full frame rate
  • Exercise specific intelligence instead of one size fits all logic
  • Clean, distraction free UI designed for active users
  • Motivating feedback that encourages consistency
  • Full workout flow with routines, scoring, and history tracking
  • Fair scoring across different speeds and movement styles

What we learned

  • Computer vision requires relative measurements and smoothing to work in real environments
  • UX timing matters more than verbosity during physical activity
  • Motivation is critical in rehab focused tools
  • Percentage based thresholds generalize better than fixed values
  • Real time systems demand careful frontend and backend coordination

What's next for PhysioVision

  • Expand the exercise library to cover full PT protocols
  • Add therapist dashboards for remote monitoring
  • Provide deeper form corrections such as knee alignment or back posture
  • Launch a mobile friendly version
  • Add progress analytics to visualize recovery trends
  • Build injury specific rehabilitation programs

Built With

Share this project:

Updates