Разработка мобильного приложения для бассейна/аквапарка
Бассейн и аквапарк — два принципиально разных продукта внутри одного типа заведений. Бассейн: дорожки, сеансы, абонементы, расписание секций. Аквапарк: входные билеты, аттракционы с очередями, временные браслеты, семейные пакеты. Часто один объект совмещает оба формата — и приложение должно это отражать.
Управление нагрузкой и бронирование дорожек
Бассейн с дорожками — задача распределения слотов в двух измерениях: время сеанса + номер дорожки. Семантически это как бронирование мест в самолёте, только дорожки не все одинаковы (медленная / средняя / быстрая).
Реалтайм отображение занятости: сколько людей сейчас в воде, есть ли свободные дорожки — через WebSocket или Firestore snapshots(). Турникетные системы (СКУД) дают события прохода — интеграция через REST API или MQTT в зависимости от поставщика. Популярные в России: PERCo, Parsec, Sigur — у каждого свой API, интеграция разная.
Электронные билеты и QR
Вход по QR-коду — стандарт для аквапарков. Генерация QR: серверная (qr_flutter на клиенте только для отображения), подписанный JWT-токен с exp (время действия), ticket_id и user_id. Турникет сканирует → сервер валидирует подпись → даёт добро.
Для аквапарков: временные браслеты с RFID — мобильное приложение здесь как дополнение, а не замена физического браслета. Логика: к браслету привязан счёт, клиент пополняет через приложение (Apple Pay / Google Pay), кассы у аттракционов списывают по NFC.
Семейные пакеты и детские билеты
Один взрослый покупает билеты на всю семью — стандартный сценарий. На уровне данных: Order содержит несколько Ticket, каждый с age_group (adult / child / infant). Скидки применяются серверно (не доверяем клиенту расчёт цены). QR-код для ребёнка отображается у родителя в приложении — ребёнок со смартфоном не обязателен.
Аттракционы и очереди в аквапарке
Виртуальная очередь — опциональная, но конкурентная функция. Клиент «занимает место» в очереди на горку через приложение, получает уведомление «ваша очередь через 5 минут». Реализация: серверная очередь (Redis RPUSH/LPOP), FCM-уведомление при приближении. Критично: если клиент не подошёл в течение 3 минут — слот пропадает, следующий в очереди получает пуш.
Стек
Flutter + Riverpod. Offline-доступ к купленным билетам — обязателен, в аквапарке часто плохой интернет. QR-код хранится в Hive с TTL = дата действия. Платежи: Stripe / ЮKassa с Apple Pay и Google Pay. Firebase Analytics для анализа воронки покупки (на каком шаге уходят).
Сроки
MVP (расписание сеансов, бронирование, QR-билеты, абонементы): 10–14 недель. Полный аквапарк с очередями, RFID-интеграцией и семейными пакетами: 18–26 недель. Стоимость рассчитывается после анализа требований к интеграциям с СКУД.







