Training platform for athletes who train across multiple sports and disciplines.
Most fitness apps assume you have one sport. HybridFit doesn't. It's built for the athlete who runs in the morning, lifts in the afternoon, and plays soccer on weekends—and wants to see all of it in one place, structured, trackable, and adapting as their schedule changes. I'm that athlete, and no existing tool handled multi-discipline training without friction. So I built the one I wanted.
The platform handles multi-plan enrollment, detailed workout logging across four types (distance, strength, drill, and mixed sessions), a flexible program calendar, streak tracking, and a progress dashboard that shows you exactly where you are in each plan. The exercise library has 1,000+ curated entries built from multiple data sources, normalized into a consistent schema. AI coaching recommendations are the next layer being built on top.
The hardest design problem wasn't any individual feature—it was making a system that complex feel simple to use daily. Every UI decision got evaluated against a single question: does this add friction or remove it? The answer shaped the architecture as much as the interface.
Early on, certain core data fetches were issuing a database query for every enrolled plan a user had—the classic N+1 problem. Static content like the exercise library was also hitting the database on every request with no caching. I rearchitected the query patterns to batch related data in single calls, added field projections to strip unnecessary payload, introduced response caching on content that doesn't change frequently, and right-sized the connection pool for real concurrency. The result was a projected 20× increase in concurrent user capacity.
A strength session and a 5K run are structurally nothing alike—one tracks sets, reps, and weight per exercise; the other tracks distance, pace, and heart rate for the whole session. Drills add another dimension entirely. Designing a data model flexible enough to represent all of these consistently, while still being efficiently queryable and renderable by a single logging UI, was a genuine schema design challenge. Getting the abstraction right early saved a lot of pain later when adding mixed workout types.
A 1,000+ entry exercise library doesn't exist until you build it. I wrote a data ingestion pipeline to pull exercises from multiple external sources, each with their own structure and format, and normalize them into a unified schema that the frontend and future recommendation engine could work against. The pipeline had to handle inconsistent naming, missing fields, duplicate entries across sources, and sport-specific conventions—running drills and strength exercises don't share the same vocabulary.
Reduction in database queries on static routes
Curated exercises across running, strength, soccer
More concurrent users after connection pool tuning
Workout types: distance, strength, drill, mixed
Live at hybridfit.app