Inspiration

Most people know they should work out, but boring routines and no access to a gym make it incredibly easy to skip. When that happens, what do we reach for instead? Something thrilling, fast-paced, and packed with adrenaline. We wanted to bottle that same energy and pour it straight into fitness, so staying active feels exciting instead of exhausting.

What it does

FitDuo turns short workouts into fast, competitive challenges that feel more like a game than a chore. You jump into a battle, complete quick exercises, and try to outscore your opponent as your stats update instantly. It transforms a stale workout into something energetic, motivating, and genuinely fun to come back to.

How we built it

We built the frontend with React and TypeScript because we wanted the interface to feel smooth and snappy. Tailwind and shadcn UI helped us create a clean, game-like experience, and Framer Motion added just enough flair to make every screen feel alive. On-device computer vision through MediaPipe lets the browser track reps in real time, which means no gym equipment, no extra hardware, and no video leaving the device. Our backend runs on FastAPI with WebSockets so players can battle and update scores in sync without lag. Everything is deployed across Vercel and Railway for a seamless experience from start to finish.

Challenges we ran into

Real-time computer vision required precise optimization. We had to ensure that pose tracking remained stable and accurate while the interface, animations, and game logic all ran simultaneously in the browser. This involved tuning model settings, managing frame rates, and reducing unnecessary computations to maintain smooth performance.

Synchronizing two players over WebSockets also introduced challenges. We needed to ensure that both clients received updates consistently and in the correct order, especially during time-sensitive events such as rep counting or match transitions. Handling connection drops, latency, and message reliability became an important part of the implementation.

We also ran into issues with CORS when connecting our Vercel-hosted frontend to our Railway-hosted backend. Adjusting CORS policies, environment variables, and domain configurations was necessary to establish secure and stable communication across services.

Despite these challenges, we were able to optimize performance, stabilize communication, and deliver a responsive and reliable experience.

Accomplishments that we're proud of

We successfully built a functional, real-time competitive workout platform that runs smoothly in the browser. One accomplishment we are particularly proud of is achieving consistent on-device pose tracking without sending any video data to the server. This improves privacy, reduces latency, and makes FitDuo accessible even on lower-end devices.

We also developed a clean and responsive interface with clear feedback, animated transitions, and a structured user flow that keeps the experience intuitive. Integrating authentication, matchmaking, computer vision, real-time communication, and exercise scoring into one unified system within a short development period was another major achievement.

Finally, we designed a fitness experience that feels engaging and motivating. We turned short workouts into structured, competitive challenges that users can complete from anywhere, even without access to a gym or equipment.

What we learned

We gained practical experience in combining browser-based computer vision with real-time game mechanics. This included optimizing MediaPipe performance, stabilizing pose detection, and managing frame rates so that CV, UI updates, and user interactions could all run concurrently.

We learned how to build reliable WebSocket communication for synchronized competition. This required handling latency, connection stability, and consistent state updates across multiple clients.

We also gained deeper insight into designing user experiences for fitness applications. Short, structured challenges, instant feedback, and clear progress indicators significantly improve motivation and consistency.

Finally, we learned how to deploy and integrate a multi-service architecture across Vercel, Railway, Firebase, and WebSockets in production. This broadened our understanding of cross-platform communication, CORS configuration, and performance tuning at scale.

What's next for FitDuo

We plan to expand FitDuo with a broader set of exercise types and challenge modes that support different training goals, such as strength, endurance, and mobility. We also aim to introduce rankings, streaks, and progression systems that help users stay consistent and track their improvement over time.

A major next step is integrating AI-powered form feedback. Using computer vision, FitDuo will be able to identify common posture issues, range-of-motion limitations, or unsafe movement patterns. This will allow users who cannot afford a personal trainer to still receive helpful guidance and general corrections during their workouts.

We also want to build personalized training recommendations based on each user’s past performance and pacing. Finally, we plan to develop a mobile version to make FitDuo accessible anywhere, so users can engage in fast, competitive workouts without needing specialized equipment or a gym environment.

Built With

Share this project:

Updates