Repple
One system · three ways in

The gym runs
on one record.

A member logs a set. Their coach sees it that evening. The owner sees what it did to attendance, to payroll, to the month. Same row in the same database — read three ways, by three people who each need something different from it.

Repple

For the person training

Download on the App StoreDownload on the App Store Get it on Google Play

Repple Coach

For personal trainers and coaches

Download on the App StoreDownload on the App Store Get it on Google Play

Repple Studio

For gym owners and managers

Download on the App StoreDownload on the App Store Get it on Google Play

One account across all three — install only the one for your role. The listings are going live now; if a link does not open yet, that app has not finished going out. You can create your account today and sign in when it lands.

Why the split works

One row written once,
read three different ways.

A one-to-one session is a single row. It carries who trained, who coached, when it started and what happened to it. Three apps read that row and none of them asks the same question of it. Nothing is copied between them, so there is nothing to fall out of step.

Data lineage

What each app takes from the same session row

Illustrative
ONE ROW sessions member_id trainer_id starts_at 18:00 outcome delivered sets · load · reps REPPLE · THE MEMBER Volume, personal records, streak Reads the sets. 2,447 kg shifted; a bench best of 92.5 kg. Their history. Nobody else’s screen shows it set by set. REPPLE COACH · THE COACH Delivered, and whether the plan is being followed Reads the member and the outcome. One session delivered. Booked and delivered are different columns, so no-shows do not flatter it. REPPLE STUDIO · THE OWNER One payroll line, one place against capacity Reads the trainer, the hour and the outcome. Never the sets. Priced only once somebody has recorded that it happened. One write. No export, no nightly sync, nothing to reconcile at month end.
The same row, three questions. The member wants to know what they lifted. The coach wants to know whether the work is being done. The owner wants to know what the hour cost and whether the room was full. Splitting the apps means each of them gets a screen built for their question; sharing the database means the three answers cannot disagree. Figures shown are made up, because there is no live gym to draw from.
Repple

Writes most of it

Sets, reps, load, cardio, meals, scans, measurements. The member is the one holding the phone during the work, so they are the one who creates the rows.

Repple Coach

Reads it, and writes the plan

A coach writes programmes and marks what happened in a session. They read a client's log only where that client has linked them.

Repple Studio

Reads the parts that cost money

Attendance, delivered sessions, memberships, payments, door visits. Studio never opens a member's training log — that is not the gym's row to read.

Which one is mine

Same record.
Different job.

Install the one that matches what you do. If two of them describe you — a coach who also trains, an owner who still takes clients — install both. It is one account either way.

ReppleFor membersYou train. Repple CoachFor coachesYou have clients. Repple StudioFor gymsYou run the place.
Log your own trainingSets, reps, load, cardio, effort.Your full historyYour own sessions too
Apple Health & watchesImport what you already recorded.In and out
Someone else’s trainingReading a person you work with.Only if you link a coachEvery client who linked youAttendance, not their lifts
ProgrammesWritten once, assigned out.Receive themWrite and assign
Timetable & classesBookings, capacity, attendance.Book a placeYour own weekThe whole gym’s
Memberships & paymentsWhat is sold and what was taken.Your ownEveryone’s
Staff & payrollDelivered sessions, priced.What you deliveredWhat the gym owes
The doorWho is in the building right now.Working the deskThe whole log
The business pictureRetention, revenue, capacity.On phone and on the web

A dash means that app does not do that job — not that the feature is missing. Studio does not show a member their own lifts because that is Repple’s screen, and they are the same rows underneath.

Create an account
Repple Studio · for the gym

Six screens that between them
run the place.

Studio is on the phone and on the web, and the web console is the one the front desk actually wants — wide tables, a keyboard, and the jobs that take twenty rows at a time. Both call the identical functions through the identical database rules, so there is no second version of any figure.

Timetable

The week, and who turned up

Build a class once as a real repeating series rather than twelve copies. Take bookings against a stated capacity, then tick people off at the desk.

  • Fill rate is bookings against capacity
  • Show rate is attendance against bookings
  • They are different questions and get different numbers
Sessions

One-to-ones, and their outcome

Every session that has finished with nothing recorded sits at the top of the screen with the buttons that resolve it: delivered, no-show, cancelled, late cancel.

  • Whether a no-show is payable is your policy, set on the page
  • Settlement stamps the sessions it covered
Money

Price book, memberships, payments

What the gym sells, who is on which plan, and what has actually been taken — by card, cash, transfer or direct debit.

  • Money is held as whole minor units, never as a float
  • One-off payments stay out of recurring revenue
Door

Who is in the building

Check-ins at the desk, by QR, or from the app, plus the passes sold to people who are not members. The one operational screen a trainer can open as well as an owner.

  • A visit with no exit is open, not zero minutes
  • Days since last seen, per member
Import

Your existing records, brought in

Paste a spreadsheet of plans or payments. Everything is a dry run until you press the button, and every row it cannot read with confidence comes back refused, with the reason.

  • It asks which way round your dates are written
  • It never guesses at an ambiguous value
Equipment

What the gym owns, and what is broken

A register of kit, its service schedule and its status. Capacity is a claim about a room, and it stops being true the moment six of the rowers go out of service.

  • “No schedule” and “schedule set, never serviced” stay separate
  • An empty register returns nothing, not zero
Timetable

Where the week is actually full

Illustrative
Mon Tue Wed Thu Fri Sat Sun 06:00 08:00 10:00 12:00 14:00 16:00 18:00 20:00 78% 71% 74% 69% 62% 41% 52% 48% 55% 50% 44% 66% 58% 34% 29% 31% 27% 30% 72% 64% 61% 58% 63% 57% 49% 22% 19% 17% 38% 31% 46% 51% 44% 48% 40% 35% 28% 92% 96% 88% 94% 76% 44% 39% 67% 72% 64% 70% 48% Bookings held as a share of the room’s stated capacity. A dash is an hour with no class on the timetable — which is not the same as a class nobody booked.
  • 75% and over
  • 50–74%
  • 25–49%
  • Under 25%
  • No class scheduled
The useful reading is the 14:00 row, not the 18:00 one. Everybody already knows the evening is full. What an owner cannot see from the front desk is that two hours of coached time sit at under a quarter full on three weekdays, and that the weekend peak is at 10:00 rather than the 06:00 the weekday timetable is built around. Both are decisions about where to move a class. Figures here are invented to show the shape of the chart.
Capacity · bookings · attendance

Three numbers a single “attendance” figure hides

Illustrative
300 200 100 0 places wk 1 wk 2 wk 3 wk 4 wk 5 wk 6 wk 7 wk 8 wk 9 wk 10 att / bkd 149/171 158/182 141/166 171/198 179/205 160/190 188/214 199/226 190/219 214/238
  • Attended 1,749
  • Booked, did not attend 260
  • Never booked 763
Fill 72%, show 87% — and they need fixing in opposite directions. The pale band at the top is unsold room: a marketing and timetabling problem. The middle band is people who booked and did not come: a coaching and reminder problem. A gym reporting one blended “attendance” figure cannot tell which of the two it has. Studio sums the places first and divides once, so a small class cannot swing the result. Invented figures, shown to make the bands legible.
Payroll

It can only count
what was delivered.

The easy way to build this is to treat every booked slot whose clock has passed as a session that happened. That counts no-shows, counts slots nobody cancelled, and then pays for both. Repple will not do it.

  • Booked and delivered are different columns — a session is delivered when somebody records that it was, not when the hour passes.
  • One unmarked session stops the total — the payroll figure goes to a dash and says how many are outstanding, rather than quietly under-reporting.
  • Whether a no-show is payable is your policy — it is a control on the screen, so you state it and watch what it does to the number, instead of finding out in a payslip.
  • There is somewhere to do the marking — the Sessions screen lists everything awaiting an outcome at the top, with the three buttons that clear it.
  • Paying stamps the sessions it covered — so the same hour cannot be settled twice next month.
repple studio — sessions Sample data

Awaiting an outcome — these sit at the top of the screen until somebody says what happened to them.

Tue 17:00 · one-to-one2 days agoUnmarked
Fri 09:30 · one-to-one6 days agoUnmarked
Delivered 30d
121
outcome recorded
Payroll 30d
2 sessions still need an outcome recorded
Last 30 days

What actually happened to the booked hours

Illustrative
148 one-to-one sessions finished in the last 30 days 2 unmarked 121 Delivered Priced at the fee the gym set. 9 No-show Payable or not, by your policy. 16 Cancelled 12 in time, 4 late. 2 No outcome recorded Nobody has said what happened. PAYROLL · 30 DAYS 2 sessions still need an outcome recorded.
Two rows out of a hundred and forty-eight hold the whole figure. That is deliberate. A payroll total that silently ignores the sessions nobody marked is a total somebody will pay against, and it will be wrong by exactly the sessions that were hardest to remember. The bar also shows why booked hours are the wrong basis for paying anyone: 25 of the 148 are known not to have been delivered, and 2 more nobody can say. Invented figures.
Attendance, properly counted

Most people who train at your gym
never book anything.

Counting attendance only where a class was booked and ticked off leaves out everyone who walks in, trains on the floor and leaves. That under-count reaches further than the headline: a member who moved from classes to the floor looks exactly like a member who stopped coming. The door log is there so those two are different.

Door log · one week

Footfall by hour

Illustrative
60 40 20 0 entries 58 51 06 08 10 12 14 16 18 20 hour with a class on the timetable 19:00 is the second busiest hour of the week and has nothing scheduled in it.
  • 45 entries and over
  • 25–44
  • Under 25
The timetable and the door disagree, and the door is right. Every entry is recorded at the desk, by QR or from the app, whether or not a class was booked. A visit with no exit recorded is left open rather than counted as zero minutes, because a gym reading “average stay: four minutes” will redesign its floor around a rounding artefact. Invented figures.
Membership · 12 months

Joined, left, and the net of the two

Illustrative
+20 +10 0 −10 members Sep Dec Mar Jun Aug 176 joined · 135 left · net +41. The line is the net; four months of the twelve are below it.
  • Joined 176
  • Left 135
An annual figure hides the four months that were losing. A gym reading only “net +41 this year” never sees that November and December went backwards before January carried the total. Studio keeps the movement month by month for exactly that reason. Invented figures.
Day one

A gym that cannot import its history
starts from nothing.

Everything Studio does — retention, payroll, the lot — is worthless against an empty record. So the import is not an afterthought bolted on at the end; it is the first screen that matters, and it is built to refuse rather than to guess.

  1. 1

    Paste the file in

    A CSV, straight into the box. The importer recognises the usual column names — member, amount, date, method for payments; name, price, interval, currency for a price list — so most exports from whatever you are on now go in without being rewritten first.

  2. 2

    Say which way round your dates are

    03/04/2026 is the fourth of March in one country and the third of April in another, and no amount of cleverness can tell which from the file. You pick day-month-year, month-day-year or year-month-day. Nothing about the choice is inferred.

  3. 3

    Read the dry run

    The screen reports what it would do before it does anything. Rows it can read, rows it cannot, and — for a price list — which of the plans in your file the gym already sells, so an import cannot quietly create a second “Monthly” alongside the first.

  4. 4

    Look at what it refused, and why

    Every refusal comes with its reason in plain words: a price column with four decimal places is a unit rate or an exchange rate, not money, so it is handed back rather than rounded. A year of plausible, wrong history is far worse than a hundred rows you have to fix.

  5. 5

    Know what will not import

    Plans and payments import. Members are checked here but not created — a membership has to point at a real Repple account, and an account is something a person accepts, not something a spreadsheet conjures. Members come in by invitation.

  6. 6

    Then press the button

    Only that last press writes to your gym, and it writes exactly what the dry run said it would. The one sentence this is built never to produce is “12 plans imported” when five of them silently failed.

Repple Coach · for the coach

The whole book, in the place
you already look.

A coach's job is spread across a scheduling app, a spreadsheet of programmes, a camera roll of technique clips and a phone full of messages. Coach is five tabs that hold all of it, sitting on the same rows the client's own app writes.

Clients

Who needs you today

Add someone by hand, or invite by email and they accept it in their own app. Filters split the roster by at-risk, online and in-person, and needs check-in surfaces the ones who have gone quiet.

Programs

Written once, assigned out

Start from a template or build a week from scratch, then assign it — it appears in that client's Train tab. Save anything you like as a template and use it again.

Schedule

Your coaching week

Book a client into a slot, or open a slot they can book themselves. Set the availability you offer every week once. Schedule group classes and check members in.

Videos

Clips where they are needed

Record, upload or paste a hosted link. Anything in your library plays against the matching exercise inside every client's session — not in a folder they have to go and find.

Analytics

How the coaching is going

Sessions delivered counts what you actually ran this month, not what was booked. Roster health splits your clients into on track, watch and at risk. Figures stay empty until there is real activity behind them.

And your own training

Coaches train too

Coach logs your own sessions alongside your clients' — the same log, the same records board. You do not need a second account to be a person who lifts.

What the shared record buys a coach

  • No chasing for what happened — the client logged the session in their own app as they did it. You are reading the same rows, not a summary they typed out afterwards.
  • Access is granted by the client — a coach reads a person's training because that person linked them, and it stops when they unlink. It is not a side effect of working at their gym.
  • Marking a session is one tap, and it is the tap that pays you — the same outcome that clears your schedule is the one the gym's payroll counts.
  • You keep your book if you move — clients are linked to you, not to a gym's installation. Coach works for an independent coach with no gym behind them at all.
coach — roster health Sample data
Clients
23
Delivered 30d
86
marked, not booked
Awaiting outcome
2
clear these to settle

Roster health is read off delivered sessions and client load — both of them counted rows. A coach with clients and no delivered sessions is flagged, and the flag says which of the two it is.

On track17 clientsHealthy
Watch4 clientsFew sessions this month
At risk2 clientsNothing in 30 days

Invented figures. A new account shows none of this until real sessions exist behind it.

Repple · for the person training

The record belongs to
the person doing the work.

Everything else on this page is downstream of one thing: somebody logging a set. Repple is built so that logging it is worth doing — a history that goes back as far as you do, in a form you can still read in two years, and yours to take away.

Home

How recovered you are, and what is next

Readiness needs a night of sleep logged before it shows anything, and stays blank until then. Weight, body fat and muscle come from your most recent scan, with the change since the one before.

Train

Your programme, session by session

Start workout walks you through it exercise by exercise, logging reps and weight as you go. Book a slot in your coach's open times. Cardio, HIIT and mobility sit alongside the main plan.

Meals

Targets that come from your own body

Photograph it, scan a barcode, or describe it in words. Mark the day training, standard or rest and the targets move with it. Targets need a weight and body fat to scale from, so they wait for a scan.

Progress

The long view

InBody scans, the tape measurements between them, and progress photos you can put side by side. Weight is one number and it is not the number.

Me

Your account, your coach, your settings

Connect a wearable to bring heart rate and sleep in automatically. Find a coach from the trainers who have opted in and send them a request. It is your account that holds all of it.

Explore

Everything else, searchable

Records, trends, habits, reminders, bookings, packs, milestone cards, injuries, the machine scanner — reachable from a searchable directory of every screen rather than buried in a menu.

  • It works with no gym and no coach — Repple is a complete training log on its own. The gym and the coach are things you can add, not things it needs.
  • Apple Health goes both ways — workouts you already recorded come in; sessions you finish in Repple go back out, so the rings stay honest.
  • Your gym sees attendance, not your lifts — Studio reads whether you came in and what you are paying for. It has no screen that shows a member's sets.
  • You can take it all with you — export everything, and delete the account outright if you want to. Health data is used to show you your training and for nothing else.
Why it has to be one system

A gym is not a stack of
separate problems.

Attendance is a coaching problem until it becomes a revenue problem. A trainer's schedule is a staffing problem until it becomes a churn problem. When those live in different tools, you find out in the wrong order — usually at the end of the month.

Member logs

The work that happened

Sets, reps, load, effort, cardio, time in heart-rate zone. Imported from the watch or typed in by hand.

Coach sees

Who is drifting

Not a wall of numbers — the three clients whose pattern changed this week, and what changed.

Owner sees

What it costs and earns

Sessions delivered, classes filled, payroll owed, memberships lapsing. The same events, priced.

One Tuesday, followed all the way through

  1. 1

    Monday — the class goes on the board

    Built once as a repeating series rather than twelve copies of the same hour. Its capacity is fourteen, and the equipment register is what says fourteen is still true.

  2. 2

    Tuesday morning — members book

    Eleven places taken. That is a fill rate of 79%, which is a measured number, not the front desk's impression of a busy week.

  3. 3

    18:00 — the desk ticks people off

    Nine of the eleven arrive. Fill is 79% and show is 82%, and they are two different questions with two different fixes. Collapsing them into one word is how a class reads 79% on one screen and 82% on another.

  4. 4

    18:40 — two more people are in the building

    They did not book anything; they came in and trained on the floor. The door log has them, so their attendance is not lost and neither of them looks like a member who has stopped coming.

  5. 5

    Wednesday — a one-to-one is still unmarked

    Tuesday's 17:00 finished and nobody recorded what happened to it. Until somebody does, the gym's payroll figure for the month is a dash with a reason attached, and the session sits at the top of the Sessions screen waiting.

  6. 6

    Month end — nothing has to be reconciled

    Payroll counts sessions marked delivered, priced at the fee the gym set. Revenue counts payments actually recorded. Retention reads the same attendance the desk ticked off. Three answers, one set of rows, nothing exported between them.

The rule we build to

If we don't know the number,
you get a dash — never a guess.

Plenty of software fills a gap with a plausible figure. We think that is worse than useless in a business where you make staffing and pricing decisions off the screen. Every figure in Repple traces to a row someone actually created: a logged session, a recorded payment, a measurement taken. When the input is missing, the app says so and tells you what to enter.

what a missing number looks like Sample data
Sessions 30d
412
from the log
Payroll 30d
set a session fee to see this

The left figure is counted. The right one can't be derived until somebody tells Repple what a session is worth — so it stays a dash, and says why.

Heart-rate zonesneeds live samples
Show rateneeds attendance marked
Monthly recurringneeds plans priced
Class capacityneeds kit in the register
What it replaces

A spreadsheet, a printout
and a group chat.

Most gyms are already running every one of these jobs. The question is not whether they get done — it is whether doing them leaves a row behind that anything else can read. This is the same list of jobs, done the usual way and done here.

The jobSpreadsheet, printout, group chatRepple
Taking a booking A message in a chat, a name written on a printout, and a capacity nobody can check until the room fills up. A place taken against a class with a stated capacity. Fill rate stops being an impression and becomes a number.
Marking who turned up Often not done at all. Attendance is remembered rather than recorded, and only for the classes somebody thought to count. Ticked off at the desk, plus a door log for everyone who walked in without booking. It is the row a drifting member shows up in first.
Paying a coach Sessions counted back out of a diary at the end of the month, with a conversation about the ones nobody wrote down. Counted from sessions marked delivered. Anything still unmarked stops the total and names itself, rather than being rounded into it.
Spotting who is drifting Somebody notices, or nobody does. Usually the cancellation is the first hard evidence. Days since each member was last seen, read from the class register and the door log together.
Knowing what a room holds A number written on a laminated sheet some years ago, which nobody revisits when kit breaks. Checked against the equipment register, so kit out of service changes the capacity the gym measures itself against.
Finding last year's figures A spreadsheet somebody has since renamed, on a laptop that belonged to a manager who left. In the same record as this year, because it was imported at the start rather than typed forward a month at a time.
A member's own training In a different app entirely, or in a notebook. Not the gym's problem and not visible to the coach either. Theirs in Repple, readable by a coach they chose to link, and never the gym's to read set by set.

No claim here is that gyms do this badly. It is that a job done without leaving a row behind cannot be added up later, and every question worth asking about a gym is a question about adding rows up.

Underneath all three

The parts you only notice
when they're missing.

1
One account. The same email and password signs you into whichever app your role calls for.
RLS
Enforced at the database. Row-level rules mean one gym's data is unreachable from another account, even if the app asked.
Apple Health, both ways. Pull workouts off the watch; write finished sessions back so the rings stay honest.
0
Ads, trackers, resale. Health data is used to show you your training. Nothing else.
Money

Held as whole minor units

Every amount in the system is an integer number of cents or fils, never a decimal. Floats do not belong near a ledger: 0.1 plus 0.2 is a rounding error in a spreadsheet and a dispute in a gym.

Shared functions

One implementation per figure

The web console and the phone app call the same functions over the same rows through the same permissions. A number cannot read one way on the desk and another way on the owner's phone, because there is only one of it.

Straight answers

Do I need all three apps?

No. Install the one that matches what you do. A member never needs Coach; a coach without a gym never needs Studio. They share an account, so if your role changes you sign in to a different app with the same details.

Is Studio an app or a website?

Both, and they are not two products. The phone app is for looking; the web console is for working — wide tables, a keyboard, and the jobs that take twenty rows at a time, like clearing a month of unmarked sessions or pasting in a price list. Both call the identical functions over the identical rows, so no figure can differ between them.

We already run on something else. Can we bring our records across?

Plans and payments import from a CSV, and the import is a dry run until you press the button. It asks which way round your dates are written rather than guessing, and hands back any row it cannot read with confidence, with the reason. Members are checked but not created — a membership has to point at a real account, so members come in by invitation.

What happens if a coach forgets to mark a session?

The month's payroll figure becomes a dash and says how many sessions are outstanding. It does not quietly settle the rest and leave the forgotten ones out. Everything awaiting an outcome sits at the top of the Sessions screen with the buttons that clear it.

Does a member have to book a class to be counted as attending?

No. The door log records entries at the desk, by QR or from the app, whether or not anything was booked. That matters beyond the headline count: without it, a member who switched from classes to training on the floor is indistinguishable from a member who stopped coming.

Does it work without an Apple Watch?

Yes — everything can be entered by hand. What a watch adds is live heart rate during a session and automatic import of workouts you already recorded. One thing it uniquely enables is the heart-rate zone breakdown, which needs samples taken during the session; devices that only report a daily average can't produce it, and Repple won't fake one from a daily figure.

Who can see a member's data?

The member, always. A coach they have deliberately linked to. And their gym, for the membership and attendance information needed to run the place — not private messages, and not their training set by set. Nobody else, and never for advertising. The full detail is in Privacy.

Can a gym export its own data?

Yes. It is your operating record, not ours. Ask and we export everything we hold for your gym.

Are the charts on this page real?

No, and every one of them says so. Repple has not launched publicly, so there is no customer gym to draw from — and we would not publish one if there were. The figures are invented to show the shape of each chart and what it is for. Inside the product, a new account starts empty and fills only with what you record.

What does it cost?

Pricing isn't published yet — the apps are in their first release and we would rather set it against how gyms actually use them than guess in advance. Email support@repplefitness.com and we'll talk plainly about it.

Start with the record.

Create one account, pick the app that fits what you do, and start putting real sessions into it. Everything else in Repple is built on top of that.