Розробка мобільного додатку для йога-студії
Додаток для йога-студії вирішує три завдання одночасно: онлайн-запис на класи, утримання клієнтів через абонементи та онлайн-контент для тих, хто не може прийти особисто. Кожне з них має нюанси, які не очевидні до початку розробки.
Абонементна система — складніше, ніж здається
Абонемент у йозі — це не просто «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 або YooKassa з підтримкою recurring-передплат. Аналітика посещаємості для адміністратора — серверні звіти, експорт в CSV.
Інтеграції:
- Calendars: додати заняття в Google/Apple Calendar через
add_2_calendarпакет - Push: FCM з напоминанням за 1 годину до класу
- Платежи: підтримка Apple Pay та Google Pay через Stripe SDK
Часова шкала
MVP (розписання, запис, абонементи, пуші): 9–13 тижнів. З онлайн-класами, відеотекою, листом очікування та аналітикою: 16–20 тижнів. Вартість розраховується індивідуально після аналізу моделі абонементів та вимог до онлайн-контенту.







