Mobile fitness coaching platform for personal trainers and clients
CoachFlow is a mobile application that helps fitness trainers manage clients, assign workouts, track progress, communicate, organize weekly plans and control the coaching process in one digital workspace.
The project is built as a real mobile/full-stack product with a mobile frontend, backend API, database, authentication, role-based logic and production deployment.
The application is currently available through Google Play Closed Testing for selected testers.
CoachFlow is currently in closed testing.
Current validation:
- 8 trainers are testing the application
- 5 trainers are using the free testing period
- 3 trainers purchased a 3000 KZT subscription
- First paid users received unlimited client access for one month
This project is not only a prototype. It has real users, production backend deployment and early paid validation.
Many trainers manage clients through WhatsApp, notes, Excel tables and manual reminders. This creates a fragmented workflow for both trainers and clients.
CoachFlow solves this by giving trainers and clients one structured mobile workspace:
- trainers manage clients and training plans;
- clients see workouts, progress and coach messages;
- all important training data is stored in one place.
The coach can:
- manage clients;
- view coach dashboard;
- open client profiles;
- assign workouts;
- assign ready-made weekly workout plans;
- track attendance;
- track client streaks;
- review progress;
- communicate with clients through chat;
- manage profile, FAQ, support and settings.
The client can:
- view today’s workout;
- check assigned exercises;
- follow a training schedule;
- track weight and progress;
- see supplements and reminders;
- chat with the coach;
- open coach profile;
- manage profile and settings.
- User registration and login
- Email verification with 6-digit code
- JWT-based authentication
- Two roles: Coach and Client
- Separate mobile interfaces for each role
- Coach dashboard with statistics
- Client list and client profiles
- Workout assignment
- Ready-made weekly workout plans
- Exercise templates and workout categories
- Calendar and today’s sessions
- Chat between coach and client
- Progress tracking
- Weight tracking
- Attendance and streak tracking
- Supplements and reminders
- FAQ section
- Technical support by email
- Profile editing
- Russian, English and Kazakh localization
- Backend deployment on Render
- PostgreSQL production database
- Cloudflare/CDN infrastructure planning for media delivery, DNS and production reliability
- Expo
- React Native
- TypeScript
- Expo Router
- Context API
- AsyncStorage / API integration
- Role-based navigation
- Python
- FastAPI
- PostgreSQL
- SQLAlchemy
- JWT authentication
- Email verification flow
- REST API
- Role-based access logic
- Server-side validation
- Render for backend deployment
- Render PostgreSQL for production database
- GitHub for version control
- Environment variables for production configuration
- SMTP email service for verification codes
- Cloudflare/CDN for future DNS, custom domain and faster media delivery
Mobile App / Expo React Native
|
| API requests
v
FastAPI Backend
|
| SQLAlchemy ORM
v
PostgreSQL Database
Additional services:
- SMTP email service for verification codes
- Render for backend hosting
- GitHub for version control
- Cloudflare/CDN for future media and DNS infrastructure
The backend includes logic for:
- authentication;
- users;
- coach profiles;
- client profiles;
- workout assignments;
- exercises;
- weekly plans;
- supplements;
- progress entries;
- attendance;
- messages;
- subscriptions;
- notifications;
- email verification.
Coach side:
- Coach dashboard
- Clients list
- Client profile
- Assign workout
- Assign weekly plan
- Calendar
- Chat
- Profile and settings
Client side:
- Today screen
- Schedule
- Progress
- Coach chat
- Profile
- Supplements
- FAQ and support
During closed testing, several improvements were made:
- fixed weekly plan assignment server error;
- fixed duplicate exercise ID issue;
- added email verification during registration;
- improved coach profile;
- improved client profile;
- added FAQ and technical support;
- improved bottom navigation clickability;
- improved localization in Russian, English and Kazakh;
- translated raw labels such as
lose_weightandintermediate; - added more professional workout templates;
- improved plan assignment flow.
Current early-stage model:
- free testing period for new trainers;
- basic subscription from 3000 KZT per month;
- early paid users received unlimited client access for one month.
Future subscription plans may include:
- Free Trial
- Basic
- Pro
- Unlimited
Possible paid features:
- more client slots;
- advanced analytics;
- AI workout recommendations;
- premium workout plans;
- priority support;
- media exercise library.
- polish coach and client UI;
- add more professional workout categories;
- improve weekly plan editing;
- add more exercise GIF/video demonstrations;
- improve push notifications;
- continue testing with more trainers.
- add real payment flow;
- add backend subscription validation;
- add subscription limits by plan;
- improve trainer analytics;
- add admin monitoring;
- improve AI workout recommendations.
- public release;
- connect more trainers in Kazakhstan;
- partner with gyms and fitness studios;
- add web dashboard for trainers;
- scale CoachFlow to Kazakhstan and CIS market.
The project uses environment variables for secure configuration.
Example backend variables:
DATABASE_URL=your_postgresql_database_url
JWT_SECRET=your_jwt_secret
SMTP_HOST=your_smtp_host
SMTP_PORT=587
SMTP_USER=your_email
SMTP_PASSWORD=your_email_password
FRONTEND_URL=your_frontend_urlExample Expo variables:
EXPO_PUBLIC_API_URL=your_backend_api_urlDo not commit real .env files to GitHub. Use .env.example files instead.
Go to the backend folder:
cd backendCreate and activate virtual environment:
python -m venv .venv
.venv\Scripts\Activate.ps1Install dependencies:
pip install -r requirements.txtRun FastAPI server:
uvicorn app.main:app --reloador, depending on the project entry point:
uvicorn main:app --reloadBackend API will run locally at:
http://127.0.0.1:8000
API documentation:
http://127.0.0.1:8000/docs
Go to the Expo folder:
cd expoInstall dependencies:
npm installStart Expo:
npx expo start --clear- Real mobile application
- Real backend API
- Production PostgreSQL database
- Render deployment
- Google Play Closed Testing
- Email verification system
- Role-based coach/client logic
- Workout planning and progress tracking
- First real users and early paid validation
Emir Kamilov Backend Developer Intern Almaty / Shymkent, Kazakhstan
GitHub: https://github.com/proteyo