mobile/. Trainees sign in with a phone number and a WhatsApp code, then follow workouts, log meals, fill forms, read studio content and track their body metrics. The app talks only to the core API under /v1/trainee/* with a bearer token.
The same source also builds for the web. That export is embedded in the coach dashboard as a read-only live preview of a trainee’s app.
Stack and versions
Versions come frommobile/package.json on the dev branch.
Expo experiments enabled in
app.json: typedRoutes and reactCompiler.
Folder map
ios/ and android/ are generated by prebuild and are in .gitignore. Native configuration is only durable when it lives in app.json, a config plugin, a patch or modules/.
Features
Where to start reading
Route tree
Every route file and the gates in the layouts.
Feature modules
The folder convention with a worked example.
API client
Headers, retries, errors and the bearer token.
State management
Zustand stores, React Query, and what is persisted where.
Environment variables
.env and .env.production are ignored by Git. .env.example is the committed template.
Run it locally
3031 without any env file. See API client.
What the old notes get wrong
mobile/README.md and mobile/docs/*.md were written for an early scaffold. The code has moved on in these places.