A modern web application that uses AI-powered pose detection to analyze figure skating jumps, providing biomechanical insights and performance feedback for skaters and coaches.
- AI-Powered Pose Detection: Real-time skeletal tracking using Google's MediaPipe
- Jump Comparison: Side-by-side analysis of reference vs. user jumps
- Biomechanical Metrics: Air time, rotation speed, jump height, landing stability
- Frame-Accurate Marking: Precise takeoff and landing identification
- Mobile-First Design: Optimized for iPhone and tablet use
- Drag & Drop Upload: Easy video import with multiple format support
- Progressive Web App: Works offline, installable on mobile devices
- Real-Time Processing: Instant feedback with smooth 30fps playback
- Multiple View Modes: Switch between video and skeleton overlay
- Interactive Timeline: Scrub through analysis with synchronized playback
- Angle Analysis: Detailed knee flexion and body position tracking
- Video Export: Share analyzed jumps with overlay graphics
- Node.js 18+ and npm
- Modern browser with WebGL support
- Camera or video files of figure skating jumps
# Clone the repository
git clone https://github.com/figure-skating/feedback-loop.git
cd feedback-loop
# Install dependencies
npm install
# Start development server
npm run devThe app will be available at http://localhost:5173 for local development.
Live Demo: https://figure-skating.github.io/feedback-loop/
# Start with network access for mobile testing
npm run dev
# Access from your phone at:
# http://[your-computer-ip]:5173-
Upload Reference Video: Add a video of a well-executed jump (coach demonstration, professional skater, etc.)
-
Upload Your Jump: Add your own jump attempt for comparison
-
Mark Key Frames: Use the guided wizard to identify takeoff and landing moments in both videos
-
Analyze: Let the AI process both videos to extract pose data and calculate metrics
-
Compare & Learn: Review the side-by-side analysis, metrics, and angle charts to understand differences
-
Export & Share: Save your analyzed jump video with overlaid graphics
- React 18 with hooks and modern patterns
- TypeScript for type safety and developer experience
- Vite for fast development and optimized builds
- Tailwind CSS with custom ice-blue theme
- MediaPipe Pose for real-time human pose estimation
- Canvas API for skeleton overlay rendering
- Web Workers for background video processing
- WebGL for GPU-accelerated operations
- Zustand for reactive state management
- IndexedDB for client-side video storage
- LocalStorage for user preferences and session data
- HTML5 Video API for playback control
- Canvas API for frame extraction and export
- Web Codecs API for video encoding (where supported)
- Figure Skating: All jump types (Axel, Lutz, Flip, Loop, Salchow, Toe Loop)
- Coaching Tools: Technique comparison and improvement tracking
- Self-Analysis: Individual skater development
- Dance and artistic movement analysis
- Other sports with jumping mechanics
- Physical therapy and rehabilitation
- General movement quality assessment
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run type-check # Run TypeScript checks
npm run lint # Lint code (when configured)src/
βββ components/ # React components
β βββ Analysis/ # Charts, metrics, timeline
β βββ Layout/ # App structure, containers
β βββ Video/ # Video players, upload
βββ hooks/ # Custom React hooks
βββ services/ # MediaPipe, analysis logic
βββ store/ # Zustand state management
βββ styles/ # Tailwind CSS configuration
βββ utils/ # Helper functions, constants
- VideoContainer: Handles upload, storage, and playback
- FrameMarkingWizard: Guided takeoff/landing identification
- VideoPlayer: Synchronized playback with pose overlay
- TimelineWithMarkers: Scrub control with jump phases
- AngleChart: Real-time biomechanical analysis
We welcome contributions! This project is perfect for:
- Sports Enthusiasts: Add new sports or improve analysis algorithms
- Web Developers: Enhance UI/UX or add new features
- AI/ML Engineers: Improve pose detection or add new metrics
- Mobile Developers: Optimize mobile experience or add native features
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes with tests
- Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- MediaPipe Team for the incredible pose detection models
- Figure Skating Community for inspiration and feedback
- Open Source Contributors who make projects like this possible
- Live Demo (GitHub Pages)
- Documentation (coming soon)
- Issue Tracker
- Discussions
Built with β€οΈ for the figure skating community
Feedback Loop helps skaters and coaches unlock the power of AI for technique analysis and improvement.
