Built and shipped by Pernovatio

MyFitControl

MyFitControl

A multilingual training platform for coaches and the people they train — built, shipped to both app stores, and maintained in production.

The problem

Most training apps assume one of two users: a person following a generic programme, or a coach with an expensive back-office suite. The people in between — an independent trainer with fifteen clients, or someone who simply wants to plan their own week properly — get served badly by both.

MyFitControl was built for that middle. One product, two modes, and no assumption that you speak English.

What it does

A trainer builds programs, assigns them to clients, attaches short demonstration videos to specific exercises, and follows progress without chasing anyone by text message. An athlete without a trainer gets the same planner and the same history, self-service.

An in-app assistant explains the numbers the app computes — volume, recovery, nutrition targets — in the user’s own language. The metrics are calculated in code; the assistant explains them. That order matters, and it is the reason the answers stay correct.

How it is built

The client is React Native on Expo, in TypeScript, shipping through EAS to both stores. The backend is Supabase — Postgres with row-level security, Auth, and Edge Functions for anything that must not run on the device.

Notifications are the part most projects get wrong. Delivery is driven by database webhooks into edge functions, so a message fires because a row changed, not because a screen happened to be open. The rest timer carries an operating-system notification as a backstop, so an alarm still sounds when the phone is locked and JavaScript timers are suspended.

Billing runs through Stripe on the web and RevenueCat in the apps, with one subscription state shared across all three surfaces.

Localisation as architecture

Six languages is not a translation file bolted on at the end. Exercise names, cardio equipment types, enumerated values, AI responses, and store listings all resolve per locale. Getting that right early is far cheaper than retrofitting it, and it is the reason the product can enter a new market without an engineering project.

Where it stands

Live in both app stores and maintained in production — releases, store review cycles, schema migrations, incident fixes. Shipping the first version is the short part of the work.

Want something like this?

Tell me what the software needs to do, and what happens today when it does not.