Разработка мобильного приложения для фитнес-тренера (персональные тренировки)
Персональный тренер с 20+ клиентами теряет часы на переписку: «какое упражнение делать?», «я не помню программу», «давай перенесём тренировку». Приложение закрывает этот канал и даёт тренеру инструмент продажи онлайн-программ без физического присутствия.
Тренировочный план — самая нетривиальная часть
Конструктор тренировок — это не просто список упражнений. Нужна гибкая структура данных:
Program → Week → Day → Workout → Exercise Set
├── sets: int
├── reps: String // "8-12" или "до отказа"
├── weight: double?
├── rest: Duration
└── video_url: String?
Тренер создаёт шаблон программы, назначает клиенту, клиент видит свою версию. Прогрессия нагрузки (добавить 2.5 кг к следующей тренировке) — либо ручная корректировка тренером, либо автоматическая по правилу (если выполнено все подходы с запасом — увеличить). Хранение: drift (SQLite через Dart) для офлайн-доступа к программе без интернета в зале.
Таймер отдыха между подходами — критичная функция для удержания. Реализация через flutter_local_notifications с androidAllowWhileIdle: true — иначе на Android 12+ таймер не сработает, когда телефон в кармане.
Интеграция с HealthKit и Google Fit
Клиенты хотят видеть свои шаги, ЧСС и сожжённые калории. На iOS — HealthKit через health пакет Flutter. На Android — Health Connect (новый API, заменил Google Fit с 2023). Запрос разрешений должен быть контекстным: не при запуске приложения, а когда пользователь заходит в раздел «прогресс». App Store отклоняет приложения, запрашивающие HealthKit без чёткого объяснения цели.
Монетизация для тренера
Два сценария: B2C white-label (тренер платит подписку, получает своё брендированное приложение) или маркетплейс тренеров. White-label проще технически — один флаттер-проект, конфигурация через flavor и dart-define. Маркетплейс требует мультиарендности, платёжного сплита (тренер получает 70%, платформа — 30%) через Stripe Connect.
Продажа программ тренировок: если продаётся «цифровой контент» через App Store — нужен In-App Purchase (Apple забирает 30%). Если клиент платит через сайт и только просматривает в приложении — IAP не требуется. Это важное архитектурное решение на старте.
Стек и ключевые компоненты
Flutter + Riverpod + drift. Видео упражнений — Cloudflare Stream или Vimeo Private (не YouTube, потому что реклама конкурентов). Чат тренер-клиент — Firebase Realtime Database. Аналитика прогресса (графики веса, объёма нагрузки) — fl_chart пакет. Push-напоминания о тренировке — FCM + серверный scheduler (Laravel Scheduler или cron).
Сроки
MVP (программы, дневник тренировок, чат, расписание): 9–13 недель. С видео-упражнениями, HealthKit, продажей программ, аналитикой: 16–22 недели. Стоимость рассчитывается индивидуально после анализа модели монетизации.







