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.
Nova Store — a point-of-sale system shop owners can trust with their money
Point of sale, inventory and finance for retail shops: checkout to payroll on the hardware a shop already owns, with every amount stored exactly so the month-end numbers always match the receipts.
Mobily — an online store that sells from the same truth the shop counts with
A customer mobile app, a web storefront and an admin dashboard for an electronics and phone retailer, all on one backend that stays in step with the shop's accounting and stock. Live at mobilyiq.com.
Marah — front-desk software that bills every child to the minute
Front-desk software for kids' play centers. Families check in by phone number, children are billed by the minute, cafeteria sales land on the same bill, and parents get a WhatsApp message when their child arrives and leaves.