Personal training software for independent trainers
We were engaged to build NForge, software for independent fitness coaches, on iOS, Android and the web.
Visit NForge (opens in a new tab)
The market and the problem

NForge is live on the App Store and Google Play, and the engagement continues. We designed and built it end to end: the iOS and Android apps, the public storefronts, the payments engine and the AI programme generator.
The UK fitness market is worth about £6.5 billion, with 11.3 million gym members, and a large share of the coaching in it is delivered by independent trainers running one-person businesses. They are athletes, salespeople and admin departments in the same body, and software treats them like enterprises.
The incumbent tools charge monthly tiers that climb as the client list grows, then stack paid add-ons on top: payments as an extra, video as an extra, nutrition as an extra. A realistic setup often costs double the headline price. The bill rises when a client signs up, whether or not that client ever pays, shows up or stays.
Meanwhile the actual pain is cash. In the FSB's 2025 research, 61 per cent of small businesses said late payments hold them back, and more than half write off some invoices rather than chase them. For a trainer, an unpaid session is an evening's work gone.
The brief set the commercial model first: no subscription, and a fee taken only when money moves. That single decision shaped most of the engineering that follows.
What we built
We delivered one platform with three faces: a native app where coaches run their business, public storefronts where clients find and book them, and the machinery underneath that moves the money.


The app for personal trainers
Native iOS and Android from one Flutter codebase: clients, programme building, scheduling, earnings and the day's sessions. Coaches run their whole business from a phone, because that's where they already are.
Programmes as templates
Multi-week programmes built from reusable workout and nutrition days, numbered rather than dated so one template serves many clients. Delivered to clients as designed PDFs in four layouts, invoiced on assignment.
Live classes of up to 50 people
Video classes on LiveKit with recurring schedules, in-person classes handled with the same booking flow, and a Chromecast studio mode where the TV joins the class as a silent participant and the remote can mute the coach's mic.
Storefronts and a marketplace
Every coach can claim a handle and publish a public page with bookable classes and sellable programmes. Clients buy in the browser with Stripe and never need an app or an account.
Payments released per delivered session
When a client prepays a ten-session block, the coach's money is released session by session as each one is delivered. That is fairer to clients and makes disputes easier to settle, and the platform's fee follows the same rhythm.
Attendance tracking
Every join and leave in a video session is recorded. Sessions that ran under five minutes or where no client turned up are flagged automatically and their payout held for review, which protects clients without paperwork.
The engineering
A payments platform wearing a fitness app's clothes. Most of the engineering sits in the parts nobody sees, such as how one coach's data is kept apart from another's and how money is held and released.
NForge in outline. The mobile apps and the web side use the backend, one build behind every service. PostgreSQL holds the true record and Elasticsearch serves every list and search. It is hosted on GKE. Highlighted: the true record, where every record's key carries the business it belongs to.
What stops one coach seeing another's clients?
The structure of the data. Every record's key combines the business, the user and the record itself. Each kind of ID is a separate type in the code, so a query that strays from one business into another fails to compile. Every change to a record is also kept in an audit table.
Database and search kept in step
What a coach sees in a list or a search matches what is saved. PostgreSQL holds the true record and Elasticsearch serves every list and search, and the trick is in the ordering: the search index is written inside the open database transaction, and the save only commits if that write succeeds. The classic bug where two stores fall out of step cannot happen, so nobody has to watch for it.
The card "Database and search kept in step", drawn. The search index is written inside the open database transaction, and the save only commits if that write succeeds. Highlighted: the index write, because the card says the trick is in the ordering.
Payment holds and refunds
Refunds and disputes are easier to put right before the coach has been paid, so payouts wait. Taking a client's payment and paying the coach are separate steps with a 24-hour hold between them, and prepaid blocks are released one delivered session at a time. The system refuses to save a payment split that does not add up, and refunds hand back the platform's fee too.
One build behind every service
A small team has one thing to test and release instead of one per service. The same build runs as the public API, the admin API, the event worker, the payout scheduler and the job that closes stale sessions. Everything that happens in the background, from email to AI generation, runs through queues, each with its own time limits.
Tests where money moves
It does handle money, so the tests get as much care as the product. Automated tests cover the backend and the Flutter app, including end-to-end tests that drive the real interface, and the backend tests run in every build.
Where AI fits
Fitness software's AI story is mostly beta workout builders bolted onto subscription tiers. We built Forge AI as a production pipeline that generates complete training and nutrition programmes, with enough validation around it that a coach can put their name to the result.
Forge AI's model step, with four controls around it. A plan that fails them and cannot be repaired goes to a person, with the approve mark on the way, and does not ship. Highlighted: the model step.
- 1. A strict parser rejects anything malformed.
- 2. Calories are derived arithmetically from macros, and portions are scaled deterministically.
- 3. Validation gates check allergen derivatives, injury contraindications and load drops.
- 4. An independent AI verifier reads the result.
- Iron mark: when repair fails, the plan goes to human review.
AI workout programme generation
Generation runs as four model calls: a recipe bank, week one, the remaining weeks as compact deltas, then an independent AI verifier. Output comes back in a compact custom format in place of JSON, which cuts token cost enough to matter, and a strict parser rejects anything malformed.
Validation of generated plans
Calories are always derived arithmetically from macros, portions are scaled deterministically, and around thirty validation gates check everything from allergen derivatives (peanut catches satay) to injury contraindications to whether a load drop is a planned deload or a model losing the plot. When repair fails, the plan goes to human review and does not ship.
Models chosen by bake-off
A standalone evaluation harness runs the real pipeline across synthetic and replayed intakes, and plants known defects to measure whether the verifier catches them. The current primary model won its place on results and cost, with Claude as fallback, and every generation records per-call cost telemetry. A typical programme costs pennies to generate.
Trying Forge AI without an account
Anyone can try Forge AI on the website without an account. The trial runs the genuine production pipeline, creates an inactive account, and when that visitor later registers, their programme is already waiting. Rate caps, a daily budget breaker and a kill switch keep the free funnel from becoming a free lunch.
Phases, team and price
Delivery record
- Status
- Live on the App Store and Google Play
- Delivery
- Four phases, then continuous releases
- Team
- Senior engineers, multi-year
- AI
- Programme generator in production
Case study published , updated .
The NForge engagement has run in phases, each one earning the next, which is how we run most app and SaaS development.
Five phases, in the order listed below. Highlighted: phase 1, platform core, which included the coach app's first release.
Indicative price
£260k to £340k for this shape
A multi-tenant fitness platform of this shape, web and native mobile, Stripe Connect payments, live video and notifications, typically runs £260,000 to £340,000 over 30 to 40 weeks. Multi-year products grow well beyond that in phases. Excludes third-party costs, at London rates as of mid-2026. Bands for the shape, not an invoice.
The band in this study's price note, on one linear scale from zero. It is a band for the shape, not an invoice.
- 1. Over 30 to 40 weeks, before multi-year growth: £260,000 to £340,000
How we build
What every build goes through
These commitments hold on every build we run:
- Nothing is built until the specification is written down and you have agreed it.
- A senior engineer reviews every change before it is merged.
- Automated tests run on every change, and a failing build does not ship.
The delivery record shows this project's own details. How we work sets out the rest of the method.
What the engagement achieved
NForge is live on the App Store and Google Play with its marketplace open on the web. The payment rules the brief set are enforced in code, not in a policy document: the fee constant can only ever be lowered by an override, and no monthly charge exists anywhere in the code.
Three patterns we bring to other builds run in production here: each business's data walled off in the database key, two data stores kept in step, and validation gates around AI output.
- Public storefronts where clients book and pay in the browser, with no app or account needed
- Native iOS and Android apps from one Flutter codebase
- Prepaid session blocks released per delivered session, with automatic dispute flagging
- Backend tests in every build, and end-to-end tests that drive the real app
- AI programme generation in production, with the cost of every generation logged
Three patterns we bring to other builds run in production on NForge: each business's data walled off in the database key, two data stores kept in step, and validation gates around AI output. Highlighted: the production platform they run on.
The decision we would defend
A query that crosses accounts fails to compile
Every record's key carries the business it belongs to, and each kind of ID is its own type in the code. A query that strays from one coach's business into another's is caught by the compiler, long before a reviewer would need to spot it.
Planning something like this?
Indicative price
£260k to £340k for this shape
A band for the shape, not an invoice.
The first step
Specification sprint
£4,500 or £8,500One to two weeks
The written specification, architecture, estimate and risks: one week for a single workflow, two for a platform. You can take it to any supplier, us included.
Asked about this project
What is NForge?
NForge is a business platform for independent fitness coaches and small studios: client management, multi-week programme building, scheduling, live video classes, public storefronts and payments. We were engaged to design and build it, including the native iOS and Android apps, and the engagement continues.
What did the payment model in the brief mean for the build?
The brief set no subscription and a fee only when money moves, so everything to do with money had to be enforced in code. Payouts wait 24 hours, prepaid blocks release one delivered session at a time, refunds hand back the platform's fee, and the fee constant can only ever be lowered by an override. The system refuses to save a payment split that does not add up.
How does Forge AI keep generated plans safe?
Generated programmes pass through around thirty validation gates before a coach sees them: allergen checks that catch derivatives, injury contraindication screening, calorie arithmetic computed rather than trusted, and progression checks that understand deload weeks. Anything that can't be repaired goes to human review instead of shipping.
1 more question
What does a platform like NForge cost to build?
Fitness platforms of this shape, web plus native mobile plus payments plus live video, typically run £260,000 to £340,000 over 30 to 40 weeks with a small senior team. The NForge engagement is multi-year and has grown phase by phase.
Tell us what you're building or deciding.
Tell us about a product you want built, or a decision about AI you need to make, and we'll set up a 30-minute call. You'll get a straight answer on what it would take.
What happens after you get in touch
We reply within one working day
By email, to arrange a time for the call.
A free 30-minute call
With a senior engineer, about what you are building or deciding.
The fee in writing first
If a first step is worth taking, you get its exact fee in writing before any work starts.