Задача створити мобільний веб-додаток, який дозволить:
- переглядати студії, типи занять та розклад;
- бронювати місця на заняття;
- оплачувати онлайн або обирати «оплата на місці»;
- отримувати підтвердження та нагадування (e-mail + WhatsApp);
- автоматично створювати події у Google Calendar студії/тренера.
Адміністратори повинні мати можливість керувати розкладом, студіями, тренерами та базою клієнтів.
2. Основний функціонал
2.1. Ролі користувачів
1. Клієнт
- вибір локації;
- вибір типу заняття;
- вибір дати й часу;
- введення контактних даних;
- оплата онлайн / або вибір «оплата на місці»;
- отримання підтвердження.
2. Адміністратор
- керування компаніями, студіями й залами;
- створення/редагування типів занять;
- налаштування розкладу;
- керування тренерами;
- перегляд клієнтів та бронювань.
3. Тренер
- отримання сповіщень про нові бронювання;
- перегляд власного розкладу (читання).
3. Користувацький сценарій (User Flow)
3.1. Вибір студії
Користувач бачить список:
Студія прив’язана до свого Google Calendar.
3.2. Вибір типу заняття
Список занять:
- Adults Group
- Kids Group
- My Own Group
- Private Session
Показувати:
- назву,
- опис,
- ціну,
- тривалість.
3.3. Вибір дати і часу
Показати:
- доступні слоти (дата/час),
- тренера,
- кількість вільних місць.
Неможливі слоти — недоступні.
Перевірки:
- зал вільний,
- тренер вільний,
- не перевищена максимальна кількість учасників.
3.4. Контактні дані
Поля:
- Ім’я,
- E-mail,
- WhatsApp (з кодом країни),
- галочка згоди з умовами.
3.5. Оплата
2 варіанти:
- Онлайн-оплата (API Stripe / Xendit / Midtrans)
- Оплата на місці
Після успішної оплати — статус "оплачено".
3.6. Підтвердження
Після бронювання:
- показати деталі,
- кнопка «Додати до календаря»,
- кнопка WhatsApp студії.
4. Інтеграції
4.1. Google Calendar API
При бронюванні:
- створювати подію,
- додавати клієнта й тренера (опційно),
- при скасуванні — видаляти подію.
4.2. Платіжна система
Підтримка:
- карток,
- локальних методів,
- мінімум валют: IDR.
4.3. WhatsApp
MVP варіант:
- через
wa.me — шаблон готового тексту.
Опціонально:
- WhatsApp Business Cloud API.
4.4. Email
Надсилання підтвердження — через будь-який сервіс:
- SendGrid / Mailgun / SMTP.
5. Сповіщення
Клієнту:
- після бронювання — email + (по можливості) WhatsApp;
- нагадування за 24 години і за 2 години.
Тренеру:
- e-mail або WhatsApp шаблон.
Адміністратору:
6. Адмін-панель (MVP)
Адаптивна (можна у тому ж фреймворку).
6.1. Компанії
- назва,
- логотип,
- часовий пояс,
- email для Google Calendar.
6.2. Студії
- назва,
- адреса,
- Google Maps посилання,
- кількість залів,
- максимальна місткість.
6.3. Тренери
- ім'я,
- email,
- WhatsApp,
- доступні студії,
- які заняття може проводити.
6.4. Заняття (класи)
- назва,
- опис,
- тип,
- ціна,
- тривалість,
- максимальна кількість.
6.5. Розклад
Функції:
- створення разових і повторюваних слотів,
- зміна тренера,
- вибір залу,
- швидке редагування.
6.6. Клієнти
- ім’я,
- email,
- WhatsApp,
- історія бронювань.
7. Технічні вимоги
7.1. Фронтенд
- Адаптивна верстка (мобільна перша)
- TailwindCSS або інший сучасний CSS-фреймворк
7.2. Бекенд
- Node.js + TypeScript
- Express або NestJS
- або ваш варіант
- Авторизація адмінки: JWT
- Ролі: admin, trainer
7.5. Архітектура
- Мікросервіси не потрібні
- Один бекенд + один фронтенд
- Чиста структура проєкту
7.6. Безпека
- HTTPS
- Захищене зберігання API-ключів
- Обмеження доступу до адмінки
8. Етапи розробки
Етап 1 — Основна клієнтська частина
- відображення студій
- вибір занять
- розклад
- бронювання
- підтвердження на e-mail
Етап 2 — Інтеграції
- Google Calendar
- оплати
- WhatsApp
Етап 3 — Адмін-панель
- компанії
- студії
- тренери
- заняття
- розклад
- клієнти
Етап 4 — Тестування і реліз
- QA
- перевірка інтеграцій
- деплой
9. Очікуваний результат
Розробник повинен передати:
- Готовий робочий мобільний веб-додаток.
- Адмін-панель з ролями.
- Підключені інтеграції (Google Calendar, Email, WhatsApp, оплати).
- Документацію по API та інструкцію користування адмінкою.
- Тестове та продакшн середовище.
10. Вимоги до виконавця
- Досвід інтеграцій з API (бажано Google/платіжні системи).
- Досвід створення адмін-панелей.
- Рівень: Middle Full-Stack (самостійна реалізація повного циклу).