Inspiration

Most people fail to stay consistent in the gym because they train alone. Finding a partner who shares your schedule, intensity, and training style is nearly impossible. People rarely know who else at their gym trains at similar times. Or two people can go to the same gym every week yet never overlap. Existing fitness apps only track workouts, they don't analyze patterns like: consistency over time, preferred training hours, intensity trends, or workout categories. There is currently no system that uses real behavioral data to match compatible gym partners. Inspired by the lack of gym community tools and the addictive nature of social media apps...we present to you, LockedIn!

What it does

Feed

The Feed serves as the user's daily hub, presenting a clear overview of their current training status the moment they open the app. It includes a one tap check-in, a snapshot of the day's activity, and a scrollable view of recent sessions. By surfacing essential information upfront, the Feed keeps users grounded in their routine and encourages them to maintain momentum throughout the week.

Streaks

The Streaks page visualizes long-term consistency in a way that feels both motivating and intuitive. Users can see their live streak ring, weekly heatmap, consistency score, intensity level, and training category distribution, all updating automatically as sessions are logged. This page transforms raw activity data into meaningful feedback, helping users understand their habits and stay committed to their training goals.

Session Tracking

Session Tracking is where users actively log their workouts, either through AI-powered rep counter or manual entry. The rep counter uses lightweight pose detection through the browser camera to count reps in real time, offering hands-free, accurate session monitoring. Every logged set feeds directly into the streak engine and behavior engine, ensuring that consistency, intensity, and categories remain up to date without extra effort from the user.

Matching

The Matching system connects users with compatible gym partners by comparing their behavior embeddings, which are compact representations of consistency, preferred training times, intensity trends, and workout categories. Users swipe through potential matches and can open a detailed compatibility sheet showing overlap in timing, intensity, and different details. Matching uses real timing training behavior to form partnerships grounded in shared routines.

How we built it

We built LockedIn as a fully browser-based experience using React, Vite, Chatgpt, and TailwindCSS to create a fast, mobile-friendly interface. Our AI rep counter was implemented with lightweight pose detection running directly in the client, ensuring low latency and smooth performance without external APIs. The streak engine, behavior embedding, and matching logic were developed from scratch to keep all activity metrics consistent across manual logs and AI-tracked sessions. Throughout development, we focused on keeping real-time tasks separate from UI rendering to maintain responsiveness across devices.

Challenges we ran into

One of the biggest challenges was integrating real-time camera-based rep counting within React while ensuring the UI remained stable and responsive. Managing camera permissions across different browsers introduced additional complexity, especially on mobile. Keeping streak calculations consistent between manual and AI-logged sessions required careful synchronization of timestamps and aggregation logic. We also had to design a behavior-based matching engine without third-party APIs, relying entirely on well-defined heuristics and compact embeddings. Finally, building a clean, mobile-first interface under a tight timeline pushed us to continuously simplify and refine our design decisions.

Accomplishments that we're proud of

We’re proud of successfully implementing a fully functional, real-time rep counter in the browser: an ambitious feature that required precise coordination between AI logic and frontend rendering. Creating behavior embeddings and a working partner-matching system from scratch was another major milestone, proving that meaningful insights can be generated even with lightweight data. We also achieved a smooth, intuitive streak visualization system that updates instantly as users log sessions. Most importantly, we built a cohesive app experience that makes fitness consistency both fun and data-driven.

What we learned

Throughout this project, we learned how crucial it is to isolate real-time computation from UI code in order to maintain performance. We discovered that well-defined behavior features make simple heuristics surprisingly effective for matching users. We also gained experience in designing mobile-first interfaces that prioritize clarity over complexity. This project taught us how to build reliable streak engines, interpret activity patterns, and create intuitive visualizations. Overall, we deepened our understanding of full-stack integration, AI-assisted interaction, and user-centered design.

What's next for LockedIn

Next, we plan to expand behavior-based matching with more advanced embeddings and support for small group formations. We also aim to broaden our rep counter to handle more movements and improve long-term activity visualizations for deeper training insights. Users will soon be able to customize profiles with goals, preferences, and badges tied to consistency milestones. Additional features like accountability notifications, social streaks, and optional gym check-in verification will help strengthen community engagement. Ultimately, we envision LockedIn becoming a comprehensive social layer built on real gym behavior.

Built With

  • chatgpt
  • heroui
  • mediapose
  • react
  • tailwindcss
  • unsplash
  • vite
Share this project:

Updates