Oro GymgymBuenos Aires
232members in the app, and every payment recorded under the name of whoever took it
The whole gym, on a phone behind the counter.
How it was before
I met Nacho at the gym I go to, where he supplies the food counter. I asked how he ran his own place and whether he used any system. Oro Gym has been open for sixteen years in Buenos Aires, and Nacho takes the payments himself at the front desk.
Payments went into a notebook and collections into a separate little book. The member list was handwritten and had no photos, so he often did not know who owed him: he had the person’s details but not their face. Due dates were a daily mess.
What I built
An app installed on the phone: a file for each member with plan and due date, the list of who is overdue ordered by debt, the day’s cash register and the month’s numbers. It holds 232 members and 401 recorded payments. In a later support review I closed 34 points where code could be injected and fixed a backup that had been failing silently for six days. He then paid for seven more changes, shipped with 54 automated tests.
A single-file progressive web app, no build step · Firebase with offline persistence · Google sign-in · Sentry · CSP and HSTS on Vercel
The interface is in Spanish today. Which language it ships in is set per build.

The decisions, and why
It is a phone app, not a desktop panel.
Nacho does not use a computer and there is not one at the gym. He takes payments standing behind the counter while people walk in, and asked for it that way from the start: it had to work on the phone and be fast.
WhatsApp opens from the member’s file with the message already written.
Collecting a due payment means sending that message. If sending it takes leaving the app, finding the contact and typing, it does not get sent.
The day’s cash closes in the same app where payments are taken.
A closing that lives somewhere else is the one nobody does at nine at night.
In September I added the members who joined and the ones who left, month by month.
It was the last thing he asked for, and he wanted one thing out of it: to know whether the gym is growing. The member total does not tell him that; how many came in and how many left does.

Before and after
| Before | After |
|---|---|
| A handwritten list, no photos | A member file with photo, plan and due date |
| Collections in a little book | Overdue, due soon and paid up, on one screen |
| No end-of-day closing | The day’s cash, split by cash and transfer |
| One login for everything | Two profiles with permissions by role |
| No way to see growth | Members in and out, month by month |

I used to write everything in a notebook and the collections in a little book. Now I open the app in the morning and see exactly who paid, who owes and who to contact. A huge change.
The system, running
Where it is
Oro Gym
Av. Teodoro Sánchez de Bustamante 1091, Buenos Aires
4.5 on Google · 29 reviews
See the listing on Google MapsEmail me about a system like this, or about a role
I quote a custom system within 24 hours. If you are hiring, my resume is one page.
WhatsApp: +54 9 11 2469-3394