2025-2026

Built solo, early 2026. Started as a React PWA for me, one month, used weekly at the gym. The next few months I tried to grow it into iOS + Android on Expo plus a web dashboard for trainers. That bigger version did not ship. I still use the PWA, just me, bugs and all.

End of 2025 I started working with AI on real product code. To learn the loop I needed something real to build, and a new training cycle from my coach picked the project. Every existing gym app got something wrong: charged more than I wanted, insisted on how-to images at year nine, refused to take a plan my coach's way (half a set overhand, half underhand). So: plain text, big tap targets for sweaty hands, one exercise on screen at a time.

PlansThe home screen. One active plan, four training days, weekly goal up top.
Workout flowOne screen, one exercise, one number to think about. The next lift waits until you're done.
Built-in timerFor static work, dead hangs, planches, weighted planks. Big numbers, no fiddling.
Progress + historyWhat's done this week, what's left, total volume. Streak shows up when there is one, no nag when there isn't.
GoalsStrength goals tied to specific lifts. Optional deadlines, optional vanity.
Body trackingUS Navy body fat calc when you fill the right boxes. Optional, the app never nags.

After a month I knew it could go further. Rebuilt the React app on React Native + Expo Go, iOS and Android from one codebase. Added a second surface: a web dashboard for trainers. Maciej (same Maciej who helped on Bruvely) joined for the database layer. His coach friend supervises multiple clients in parallel from a laptop, so the dashboard had to run live sessions too, not just manage plans.

The other side of the appClient view. Coach's profile and feedback on the left, the assigned plan on the right.
Trainer dashboardCoach's home base. Stats, schedule, recent client history at a glance.
ClientsOne row per client. Filter by status, jump straight into a profile.
CalendarSchedule sessions, see the week ahead. Upcoming column doubles as a pre-session checklist.
Plan libraryPlans built on the web, played on iOS. Assignable to any client from the same screen.
Live session, setupPick the client, pick the plan, pick the day. Three taps to start a live session.
Two clients, one screenMaciej's coach friend runs two or three clients at once. The dashboard handles that as a first-class flow.
In sessionDuring the set itself the dashboard collapses to the same simple form as iOS. Weight, reps, save.
Trainer on the moveSame database, mobile-first review. For the gym floor, not the desk.

iOS + Android on Expo + React Native. Web on React + Vite, React Query both sides. Supabase underneath, one schema, row-level security splitting client from coach.

After-hours project plus a day job plus an ambitious two-surface scope, the math did not close. Maciej had his own backlog at Redbrick. We picked life and the day job over a third evening shift. Next time: rewrite from zero, ship it for me, free. Best teacher I've had in a while.

© 2026 Mateusz Dembek