Skip to content
Source

How I vibe-coded a workout app

Once again, I decided to test myself and the models on how easy it is now to generate a pleasant small app for a very specific use case, based on a list of wishes.

The task: I want an app that replaces a trainer for home workouts. This trainer would stand next to me, count reps, tell me when to rest, and when to switch to the next exercise. I hate counting myself. When exercises are rep-based, it is not that hard, but when you need to hold a static position for a while, it is painful. You start counting faster or slower depending on your mood, you do not understand where the end is, there is no satisfying feeling of completing the exercise, and so on. Your brain tries to trick you into doing less work.

And since I want to make a "player" for workouts, why not also try to formalize their structure and make it possible to generate workouts from a specific request. Something like "my neck hurts", "I want a 10-minute warm-up for an IT lifestyle", or "a walk in the park". A workout is a set of exercises. An exercise is a set of sets. A set is a set of repetitions. There is rest between sets. Each repetition is split into phases: movement to the peak, hold, and movement back. Everything has timings.

So: a workout generator + a workout player with sound notifications and fullscreen mode, so you can put the whole thing big on a TV. In short, as you can see, I chose the typical programmer path: build an app instead of doing the workout. What are you going to do about it?

First, a couple of hours to get a polished design system. Then a few hours on the functionality and polishing the wishes that appeared along the way. And about the same amount of time in total on bug fixes and responsive layout. And that is still the most painful part. Responsiveness is mostly "good enough" in most cases, and only because I checked those cases myself.

This time I deliberately did not use any trendy flows, did not write any specs, skills (except frontend-design at the start), or long prompts. I wrote everything with Opus 4.6 and occasionally asked Codex 5.3 to review it. A couple of evenings — the app was ready and deployed. And I still do not know TypeScript or React, barely understand the difference between bun and Vite, and I also do not know how to deploy all of it. Though, of course, from experience I roughly understand how software is built. I understood that I first needed to make a foundation for the design, for tests, and occasionally return to architecture analysis.

Generating yourself an app is significantly easier than it was even a few months ago. A year ago I could not bring the same idea to completion. And most interestingly, if you have programming experience, generating your own thing is often much easier than searching for an existing one and accepting its compromises.

Frontend developers among my subscribers, a question for you: how bad is the code? What would you do completely differently? I am genuinely interested, so I can tune the process for future projects.

Code is here — https://github.com/pavelkorolevxyz/exercaise App is here — https://exercaise.pavelkorolev.xyz/