All posts

Introducing HQ.training

Why we built one workspace for gyms, coaches and athletes, told from both ends of a training plan: the coach who writes it and the athlete who follows it.

and

5 min read

We are Pawel Dregan and Chris Breuer, and we built HQ.training together. Pawel is an ultra runner and a coach. Chris is a software engineer with a SaaS background who is new to endurance training, and Pawel coaches him. Between us we cover both ends of a training plan: the person who writes it and the person who follows it.

HQ.training is one workspace for gyms, coaches and athletes. An athlete trains, syncs and tracks for free. A coach writes the plan and sends it out. A gym runs its timetable, memberships and front desk. All three work from the same sessions, so nothing has to be copied from one app into another. Below, each of us explains what that means from our side.

Pawel: writing the plan

I coach ultra runners one to one. I have finished SwissPeaks 700K and placed second at the Lappland Arctic Ultra 500K, and my coaching is built on that race experience.

I write my athletes' training in TrainingPeaks, and Chris is one of those athletes. Each week I write structured sessions, check what everyone actually did, and answer their questions about it.

HQ pulls the sessions I write in TrainingPeaks into each athlete's HQ account with the structure intact: the repeat blocks, the targets, the order of the day, and the comments on each session. The athlete sees the session I wrote, in their own numbers, and nobody has to retype it.

Coaches who write their plans in HQ itself can type a session the way they would write it in an email or a spreadsheet, like 5x (4m @ 95-105% FTP, 2m easy). HQ turns that into structured steps, an interval chart, a TSS estimate and a file for the watch. Strength works the same way, with supersets, circuits and a video for each exercise. From there a coach can:

  • send a session or a plan to a whole squad, repeating weekly for up to twelve weeks, with each athlete getting their own copy to adjust
  • draft a plan with the AI plan builder, which reads the athlete's thresholds, recent load, events and goals before it writes phases, weeks and sessions
  • see every athlete's day on one board, with fitness, fatigue and form next to it
  • talk through a session in a comment thread attached to it
  • import TrainingPeaks workout and metrics exports, comments included

Coaches pay one flat price with no per-athlete fee. The coach store lets a coach sell plans, videos and video series, with payouts going straight to their own Stripe account. HQ takes no cut.

Chris: following the plan

My background is software engineering and SaaS, and I am new to endurance training. Once Pawel started coaching me, my week lived in several places at once: his plan in TrainingPeaks, my runs on my watch and my weight in the Withings app. Each app knew its own piece, and putting the pieces together was my job. Building software is what I do for a living, so I wanted one place where the plan, what I actually did and how I recovered sit next to each other.

In HQ every session reads in my own numbers. A step written as 95-105% of FTP shows up as a watt range worked out from my thresholds, and heart rate and pace targets get the same treatment. When a threshold changes, past sessions re-zone themselves.

The calendar grades the plan. Each session is colored by how close the recording came to what was planned, and recordings from a watch pair themselves with the session they belong to. Any session can be downloaded as a .fit file for a watch or head unit, or as .zwo for Zwift.

Health data comes from Oura, WHOOP, Garmin, Fitbit, Apple Health, TrainingPeaks, Withings and Renpho. Each connection syncs on its own every hour, or right away when you press Sync now. When two sources report the same night or the same weigh-in, the most direct source wins, so nothing is counted twice. Withings brings its full history, which means my weight chart goes back as far as my scale does.

All of it feeds one performance management chart: fitness (42-day load), fatigue (7-day load) and form (the balance between them), with daily TSS. It also projects four weeks ahead from the sessions already planned.

Chris: building it on Stacks

I also build Stacks, the TypeScript framework HQ runs on. The pages are stx templates styled with Crosswind, the API and database layer are Stacks, and the health integrations come from ts-health, with one driver per platform. Working on both means that when HQ needs something the framework lacks, I add it to Stacks and HQ gets it with an upgrade. This blog works that way: each post is a markdown file in the repository, and Stacks loads it, renders it and lists it in the RSS feed and the sitemap.

The phone app

The iPhone app is built for the session itself. Its workout player runs intervals step by step and strength set by set, with the exercise video playing in place. Spoken cues lower your music while they play. GPS recording keeps going with the screen locked, and Apple Health sync works in both directions: sleep, HRV, heart rate, steps, weight and workouts come in, and a session finished in the player goes back out.

The app wraps HQ's mobile screens in a native shell built with Craft. It loads the live site, so every deploy reaches every installed copy at once. Today and Calendar are drawn natively, so the app opens straight to your day. It is on its way to the App Store.

What it does for gyms

A gym gets the coaching tools for every trainer on staff, plus the operations it runs on: a recurring timetable with bookings and waitlists, unlimited or credit-based memberships, digital waivers, front-desk check-in, point of sale with stock counts, refunds through Stripe, staff roles with permissions checked on the server, and a business report covering revenue, attendance and membership. A change to a membership reaches billing, booking access and the member record at the same time.

Profiles

Everyone on HQ can have a public profile. An athlete's year of training fills in square by square, the way a GitHub profile fills in with commits. Coaches show who they coach, and gyms and studios show their classes and coaches. A profile stays private until you turn it on. Ours are at hq.training/pawel and hq.training/chris.

Your data

Health data is personal, so the defaults are strict. A coach sees nothing until you accept their invitation, and then only your sessions, calendar and fitness. Published routes hide where they start and finish. Share links are opt-in for each kind of data and can be revoked at any time. HQ shows no ads and does not sell your data, and you can export your workouts and health metrics as CSV whenever you like. The privacy page has the details.

Try it

HQ.training is free for athletes. Coaches and gyms pay one flat price, with no per-athlete or per-member fees and no cut of what they sell. You can create an account, or see everything it does first.