One system for a fitness coach's whole practice: programming, nutrition, check-ins, payments and chat. Each athlete gets a clear daily plan and a progress record that carries across every training block. Web platform live; athlete app in development.

Online coaching usually runs on spreadsheets, PDFs and WhatsApp threads. FORMA replaces that patchwork with one system built around the coach–athlete relationship. The coach programs, the athlete trains and logs, and both look at the same progress. Athletes don't sign up on their own. They join through their coach.

FOUNDER — PRODUCT DESIGN — ENGINEERING

Client
FORMA (my own product)
My role
Founder. Product design, full-stack engineering and operations.
Duration
May 2026 – present
Tools

Overview

FORMA is a coaching platform I founded, designed and built. A coach runs their whole practice in one place: training programs, nutrition, supplements, check-ins, progress photos, payments and chat. Each athlete gets a daily plan and a record of their progress.

It is built for coaches and athletes in Iraq. The web platform is live; the athlete mobile app is in development.

Context

FORMA serves the relationship between a coach and their athletes. It is not software for running a gym facility. A coach may train dozens of people remotely, each on a different program and diet, each at a different point in their progress.

There are three roles: • The platform owner manages coaches, subscriptions and revenue. • A coach manages only their own athletes. • An athlete sees only their own plan, logs and progress.

Problem

A coach with dozens of athletes is running a small business from their phone. Programs live in Excel, diets go out as PDFs, check-ins happen in chat, and payments are tracked from memory.

Three things break as the roster grows: • Progress gets lost every time a new program starts, because last month's numbers live in last month's file. • Follow-up depends on memory, because the coach has to remember who to message. • Money doesn't reconcile. Nobody can say clearly who paid, how much, and what the platform is owed.

The goal was to put programming, follow-up and billing in one system, without asking coaches to abandon the tools they already think in.

Constraints

Arabic-first. Every screen, export and message is right-to-left Arabic, with English as the secondary language for exercise names.

Mobile-first, on real connections. Most athletes use the product on their phones, over mobile data, so it has to stay fast on the connections people actually have.

Coaches live in Excel. A coach won't retype a twelve-week program to try a new tool, so import had to come first.

Access follows the subscription. When a coach's subscription ends, their athletes' access follows it automatically.

Architecture

The web app is built with React and TypeScript on a Node.js API. Each feature is its own module, so one part of the product can change without disturbing the rest. Database changes ship as versioned migrations, so every environment stays in step.

Scheduled jobs handle the routine work a coach shouldn't have to remember: • subscription renewals and reminders • overdue-payment nudges • loyalty rewards • daily meal, water and workout reminders for athletes

Chat updates live, and notifications reach athletes on their phones. The athlete app is built with Expo and React Native on the same API.

Key decisions

Progress follows the athlete, not the program. When a coach starts a new program, the athlete's previous weights carry over and are suggested set by set. This holds across copied days and template-based programs too, so progressive overload doesn't reset with every training block.

Meet coaches where they already work. Coaches write programs in Excel, so FORMA imports and exports an Arabic Excel template. Its dropdowns are validated against the exercise library. A coach brings a whole program in without retyping it, and can take it back out.

Money that reconciles. Every renewal creates an invoice. The platform's commission follows a clear rule, and any exception needs a written justification. Cashier receipts are uploaded as evidence, and the database rejects a duplicate receipt number, so every payment is counted exactly once.

Training the way coaches actually program. Supersets, drop sets, pyramids and giant sets are built in. Circuits run as round-based sessions with EMOM, AMRAP and Tabata timers, and time-based exercises log as a timer instead of a weight.

A shared library, not a blank page. The platform owner curates an exercise media library (GIFs, images and video) along with ready-made workout and diet programs. Coaches attach media by reference and start from a ready program, so no coach starts from zero.

Athletes join through their coach. There is no public sign-up. An athlete registers through their coach's invite and verifies their account, which keeps every roster clean and every athlete tied to the right coach.

Hard problems

Verification codes that never arrived. Codes sent by email often went unseen. Verification moved to WhatsApp, the channel athletes actually read, and became its own clear step in registration.

Smooth updates for people mid-session. Users who had the app open during a release could hit errors from outdated files. The app now recovers on its own and always loads the current version.

Suggested weights that went missing. Weight suggestions sometimes disappeared when a program was built from a template. The lookup was rebuilt, so an athlete's history always follows them into a new program.

Security

Access by role. Every request is authenticated and checked against the user's role. A coach only ever sees their own athletes, and an athlete only their own data.

Account protection. Accounts are verified before they're activated, sign-in is protected against abuse, and sensitive changes require confirmation.

Payment integrity. Payment records are protected against duplicates and tampering at the data level, not just in the interface.

Personal data. Personal data such as progress photos is stored with care and kept private to the athlete and their coach.

Result

The web platform is live. Coaches run athletes, programs, nutrition, check-ins, payments and chat from one place. The athlete app is in development.

TODO: number of active coaches and athletes (or "in use by coaches in [city/cities]"), and one sentence on what changed for a coach, ideally in their own words and with their permission.

Stack

Web: React · TypeScript · Vite · Tailwind CSS Backend: Node.js · TypeScript · SQL database App: Expo · React Native

What I'd do differently

Design billing before the first payment flow ships. Invoices, commission rules and payment evidence should come first. Retrofitting integrity into money paths is the most expensive change there is.

Plan the import path on day one. Adoption depended on coaches bringing their existing Excel programs in. Designing the template alongside the program builder, rather than after it, would have shaped both for the better.

Selected projects / Keep exploring

A little more of my work.

View all work

Have a project in mind?


Get in touch