The challenge
ERAFit serves three groups with very different jobs. Agencies own the coaching business, coaches manage their clients, and clients log training, nutrition, wearable data and lab results. All three need their own screens and permissions, yet they are looking at the same records from different angles.
Two risks shaped the brief. The first was scope. With programmes, nutrition, lab results, wearables, CRM and payments to deliver, separate native apps plus a web app would have multiplied the build and let the versions drift apart over time. The second was privacy. Health information and payment details need firm boundaries, so a client’s lab results reach their own coach and stay invisible to every other agency on the platform.
- Distinct experiences for agencies, coaches and clients on shared data
- One product for iOS, Android and web
- Payments handled inside the platform
- AI support for reading nutrition data and lab results
Our approach
We settled on a single Expo and React Native codebase early, and that choice shaped everything that followed. Screens, business rules and releases exist once. When we build a feature for coaches, it lands on phones and in the browser in the same release, and a bug fixed once is fixed everywhere.
Tenancy came next. We modelled agencies, coaches and clients as a hierarchy and attached every record to a tenant and a role. Access then follows from the data model itself: an agency works with its own coaches and their clients, a coach with their own client list, and a client with their own programme and results. Getting this right before launch costs far less than adding it afterwards, and with health data the price of getting it wrong is high.
For the backend we used Firebase, with Firebase Auth for sign-in and Firestore for application data. Firestore’s live updates fit the way coaching happens, with a coach and a client often viewing the same plan on different devices at the same moment. Stripe and Affirm handle billing, so clients pay inside the same app they train in.
AI-assisted nutrition and lab analysis runs on Gemini through Vertex AI. We placed it next to the client’s other data so the analysis has context, and so coaches can read it alongside activity from wearables and the history held in the CRM.
For founders planning something similar, our advice is to settle the tenancy model before the first screen is designed. Who owns which record, and who may see it, drives the database, the access rules and much of the interface. Deciding it late means rework in all three.
Architecture & stack
- App
- Expo, React Native, iOS, Android, Web
- Backend & data
- Firebase Auth, Firestore
- Payments
- Stripe, Affirm
- AI
- Gemini, Vertex AI
- Architecture
- Multi-tenant (agency / coach / client), B2B2C SaaS
The outcome
ERA Health runs one product across three platforms for three kinds of user. Agencies, coaches and clients share one system, each limited to what their role should see, and each release reaches iOS, Android and web together.
Because coaching, payments, wearable data and AI-assisted analysis live in the same app, the business maintains one platform as it grows instead of a set of loosely connected tools.
Future work starts from a single base too. A new coaching feature, a further AI-assisted check or another payment option is built once and becomes available to every user type on every platform.
- iOS, Android and web from one Expo/React Native codebase
- Role-based access for agencies, coaches and clients
- Billing through Stripe and Affirm, inside the app
- Nutrition and lab analysis assisted by Gemini on Vertex AI
“Great working with Waseem, committed and hard worker!”
Last updated


