Розробка мобільного додатку для бассейну/аквапарку
Бассейн та аквапарк — два принципово різних продукти всередині одного типу закладів. Бассейн: доріжки, сеанси, абонементи, розписання секцій. Аквапарк: входові квитки, атракціони з чергами, часові браслети, сімейні пакети. Часто один об'єкт поєднує обидва формату — додаток повинен це відображати.
Управління навантаженням та бронювання доріжок
Бассейн з доріжками — завдання розподілення слотів у двох вимірах: час сеансу + номер доріжки. Семантично як бронювання місць у літаку, лише доріжки не всі однакові (повільна / середня / швидка).
Реалтайм відображення займеності: скільки людей зараз у воді, чи є вільні доріжки — через 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 / YooKassa з Apple Pay та Google Pay. Firebase Analytics для аналізу воронки покупки (на якому етапі уходять).
Часова шкала
MVP (розписання сеансів, бронювання, QR-квитки, абонементи): 10–14 тижнів. Повний аквапарк з чергами, RFID-інтеграцією та сімейними пакетами: 18–26 тижнів. Вартість розраховується після аналізу вимог до інтеграцій з СКУД.







