Hybrid Daily: today's HYROX workout, and everything I decided not to build
Project Tech Sheet
Month
Month 4
Project
Hybrid Daily
Tech Stack
AI Tools
I do CrossFit and I'm training for HYROX, an 8 km race split by eight stations (SkiErg, sled, burpees, rowing, sandbags, wall balls…). There are two ways to train for it: pay for a programming app, which is what I do, or use a generic PDF that has no idea whether you've been training for two months or five years.
Hybrid Daily is the fourth project of the 12 months, 12 projects challenge: you open the site, pick your level and see today's workout, structured the way a coach would. No sign-up.
The problem
The hard part of training for HYROX isn't finding exercises, it's the structure: how many days, what each one is for, when to load and when to back off. A plan without that ends up as a random workout every day, and without progression you don't get better.
Strength has its own mess too: remembering what you lifted a month ago and how much to put on the bar today at 75%. That usually lives in a phone note or in your head.
The solution
You pick a level (from beginner to elite, which matches the Pro division) and a division, which only changes the weights. Each level has its own weekly template, from 3 to 6 training days, in four-week cycles: three loading weeks and one deload. The phases (base, accumulation and race-specific) are worked out from the date.
Each session is built the way a coach would build it: a mandatory warm-up, A, B and C blocks, formats like EMOM, AMRAP, intervals or for time, intensity in RPE and zones, and a coach's note. The main lift stays the same for the whole cycle so you can progress on it, and the rest rotates across 117 exercises so it doesn't repeat.

Everyone training at your level sees the same session that day, so you can share it with a link and do the same workout with a training partner. The site installs on your phone home screen like an app.
With an account, which is optional and uses Google, you unlock Weights: log your lifts across more than 100 movements, see your estimated 1RM and how it evolves, and get the percentages to load the bar, rounded to 2.5 kg plates.


What this project shows
The most useful part of this month wasn't what I built, but what I decided not to build or removed later:
- No server until there's something to store. The workout is generated entirely in the browser: it's the same calculation for everyone, so it needs no database. The first version had no backend and could take any amount of traffic at no extra cost. The server only came with Weights, once there was per-person data.
- Finding the real bottleneck. When workouts started to look too similar, the fix wasn't more infrastructure but more content: an exercise catalog with attributes, formats and rotating templates.
- Throwing away an app that worked. I built the iOS version: it compiled, ran in the simulator and Google sign-in worked. But publishing it on the App Store came with obligations that weren't worth it: also offering Sign in with Apple, a review that can reject a website wrapped as an app, publishing my address as an EU trader, and the yearly fee. The site already installs on your phone, so I removed it entirely, along with Sign in with Apple.
- Respecting other people's trademarks. It started out as HyroxDaily, but HYROX is a registered trademark. I renamed it Hybrid Daily, with a new domain and a redirect from the old one.
The technical result
For those who want the details: React, TypeScript, Vite and Tailwind on the web; Node with Fastify and PostgreSQL for the API, with hexagonal architecture. The workout generator is pure logic with tests, and the same day and level always produce the same session. A few bugs that taught me something:
- The per-user rate limit treated everyone as a single person: the API sits behind nginx and only saw its IP. It had to be told to trust the IP nginx forwards, and only that one.
- Removing the app broke Google sign-in on the web, because it relied on the same plugin. I switched to Google's official library for websites, which also requires registering the domains it's used from.
- Sign-in needs no secrets: the API checks the Google token against Google's public keys (signature, issuer, which site it was issued for, and expiry), and each account is tied to its Google identifier, never to the email.
It deploys itself to my server when the tests pass, and the API runs as its own system user, with no permission to touch anything outside its folder. Without an account nothing of yours is stored; with one, only what's needed, and deleting it removes all your lifts immediately.
Right now it's mostly me using it: I haven't taken it to people training for HYROX yet. That's the next step. The code is private for now.
If you have an idea that calls for something like this, a website that works like an app without going through the app stores, tell me what you have in mind.