Задача создать мобильное веб-приложение, которое позволит:
- просматривать студии, типы занятий и расписание;
- бронировать места на занятия;
- оплачивать онлайн или выбирать «оплата на месте»;
- получать подтверждения и напоминания (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 (самостоятельная реализация полного цикла).