Разработка мобильного приложения для йога-студии
Приложение для йога-студии решает три задачи одновременно: онлайн-запись на классы, удержание клиентов через абонементы и онлайн-контент для тех, кто не может прийти лично. Каждая из них имеет нюансы, которые не очевидны до начала разработки.
Абонементная система — сложнее, чем кажется
Абонемент в йоге — это не просто «N занятий». Варианты: фиксированное количество посещений, безлимит на период, «заморозка» на время болезни или отпуска, перенос остатка на следующий месяц. Каждый вариант требует отдельной бизнес-логики на бэкенде.
Частая ошибка: считать остаток посещений на клиенте. Пользователь записывается на занятие — клиент показывает «осталось 4 занятия», потом синхронизируется с сервером и оказывается 3. Двойное списание при сетевой ошибке — реальный кейс. Решение: всё списание только через сервер, клиент запрашивает актуальный баланс после каждого действия записи/отмены. Оптимистичный UI — только для отображения, не для расчётов.
Отмена записи: политика студии обычно разрешает отмену за 2–12 часов. Если клиент отменяет позже — занятие списывается или нет? Это конфигурируемый параметр (cancellation_policy_hours), а не хардкод.
Онлайн-классы и видеотека
После 2020 года большинство студий сохранили гибрид: очные занятия + запись или онлайн-трансляция. Для прямых трансляций: Agora RTC SDK (Flutter) или интеграция Zoom SDK. Для записанных классов — приватный видеохостинг (Vimeo Pro или Cloudflare Stream), доступ только активным подписчикам.
На iOS важно: если видеоконтент продаётся как «subscription» внутри приложения, Apple требует использовать In-App Purchase и забирает 15–30%. Если это «живая услуга» (онлайн-класс в реальном времени) — трактовка другая. Лучше уточнить у юриста Apple перед публикацией.
Запись на классы
Расписание классов — классический слот-контент. Тренер, тип занятия, зал, максимум участников, лист ожидания. Лист ожидания с автоматической записью при отмене: серверная очередь, Firebase Cloud Functions или Laravel Job при событии booking_cancelled — отправляет пуш первому из листа ожидания, блокирует слот на 15 минут для его ответа.
Карта студии (выбор коврика) — опционально, но популярно в премиум-сегменте. Реализация через SVG-схему зала с кликабельными зонами — в Flutter через flutter_svg с gesture detection.
Стек
Flutter + BLoC + Hive. Firebase для push-уведомлений и реалтайм обновлений расписания. Платежи — Stripe или ЮKassa с поддержкой recurring-подписок. Аналитика посещаемости для администратора — серверные отчёты, экспорт в CSV.
Интеграции:
- Calendars: добавить занятие в Google/Apple Calendar через
add_2_calendarпакет - Push: FCM с напоминанием за 1 час до класса
- Платежи: поддержка Apple Pay и Google Pay через Stripe SDK
Сроки
MVP (расписание, запись, абонементы, пуши): 9–13 недель. С онлайн-классами, видеотекой, листом ожидания и аналитикой: 16–20 недель. Стоимость рассчитывается индивидуально после анализа модели абонементов и требований к онлайн-контенту.







