ПроектыПроект для клиента

Set Hub — приложение, в котором гости бронируют студию

Приложение для iPhone и Android, через которое постоянные гости бронируют сеты напрямую, без комиссии площадок: лента времени по живой занятости, бронь в обход занятого часа, подбор сета по фото-референсу, золотой час на крыше и вход в студию по Face ID — даже в подвале без сети.

  • Expo · React Native · Swift
  • Stripe Checkout
  • Live Activities · App Intents
  • NOAA · National Weather Service
  • Visual Intelligence · CoreLocation
Set Hub — для гостей

В цифрах

35 миндержится время, пока гость платит: проверка «свободно» и запись — под блокировкой базы
3отрезка в одной брони в обход чужой — по цене одной брони, перерыв не оплачивается
±3 минточность заката и золотого часа: формула NOAA сверена с таблицами
150 мвокруг студии — и iPhone сам напомнит, как войти; место гостя с телефона не уходит

Задача

Постоянные гости бронировали студию через Peerspace и Giggster: площадки берут комиссию с каждой брони, а студия не знает гостя и не может предложить ему абонемент. Сайт со своей бронью уже был, но на телефоне гостю нужно больше: увидеть занятость, забронировать за минуту, найти дверь и код в день съёмки, продлить съёмку, если не успели, и отправить адрес группе — без регистрации каждого.

Что внутри

Бронь на ленте времени

День, начало и длительность выбираются лентами с делениями по получасу, а занятость считается по броням всех каналов — Peerspace, Giggster, сайт, прямые. Цену считает сервер: −10 % от 4 часов, −15 % от 8, полный день по фиксированной цене, добавки и уборка. Время держится 35 минут, пока гость платит в Stripe Checkout: проверка и запись идут под блокировкой базы, поэтому два гостя один час не возьмут, а неоплаченное удержание снимает таймер.

Бронь в обход занятого часа

Если в середине занято, приложение предлагает разделить: с 12 до 4 при занятом часе с 2 до 3 — это 12–2 и 3–5 по цене одной брони, перерыв не оплачивается. Каждый отрезок — своя бронь для календарей и проверки накладок, а сумма, оплата, письма и отзыв — у первой. Минимальный отрезок, максимальный перерыв и число отрезков задаёт владелец в CRM, и сервер не примет бронь не по правилам.

Сет по фото-референсу

Гость показывает мудборд или кадр из клипа — сервер сравнивает его с листом главных фото всех 19 сетов и возвращает три сета с процентом совпадения и объяснением. Ответ модели ограничен строгой схемой: название сета — только из списка студии. Без модели — по палитре: k-средние на кадре 48×48 против палитр сетов. На iPhone с Apple Intelligence сеты ищутся и из «Визуального интеллекта». Фото нигде не сохраняется.

Золотой час на крыше

Для крыши приложение считает положение солнца по формуле NOAA для точки студии с учётом перевода часов — закат, золотой и синий час с точностью ±3 минуты — и берёт прогноз Национальной метеослужбы США. Деления золотого часа на ленте подсвечены янтарным, а кнопка «Catch it» ставит начало за полчаса до него.

День съёмки: как войти, даже без сети

За сутки до начала открывается «как войти»: код двери, этаж, Wi-Fi. Текст закрыт Face ID, прячется, когда приложение уходит в фон, и лежит в связке ключей только этого телефона до конца брони — в подвале без сети тоже откроется. У двери iPhone напомнит сам: круг 150 метров вокруг студии отслеживает система, приложению не нужно работать в фоне, а место гостя с телефона не уходит.

Live Activity, напоминания и продление на час

За три часа до начала — «Starts soon» на экране блокировки, во время съёмки — «On set» с обратным отсчётом и полосой; на Android — закреплённое уведомление. Локальные напоминания — за сутки и за час. Не успели — «Extend by an hour»: если следующий час свободен, бронь продлевается по той же цене, что при брони сразу на это время, через отдельную оплату. Время занято — можно встать в лист ожидания и получить письмо, как только оно освободится.

Съёмочной группе — ссылка без приложения

Подписанная ссылка открывает страницу группы: время, адрес с картами, «как войти», правила, парковка, «добавить в календарь». Отмена видна сразу, а через шесть часов после конца — «That’s a wrap». После съёмки — карточка для Stories 1080×1920 с фото сета, без имени гостя и суммы.

Бонусы, абонементы и переписка

Скидка растёт с числом визитов, абонемент — подписка Stripe с часами на месяц, пакеты часов и подарочные карты применяются сами в строгом порядке: часы абонемента, пакет, скидка, карта. Переписка со студией — внутри приложения, а «Request a change» ставит задачу менеджеру. Удаление учётной записи — прямо в приложении, как требует Apple.

Экраны

Страница сета: фото, цена за час, площадь, вместимость и минимум часов
Страница сета: фото, цена за час, площадь, вместимость и минимум часов
Бронь в обход занятого часа: 12–2 и 3–5, перерыв не оплачивается
Бронь в обход занятого часа: 12–2 и 3–5, перерыв не оплачивается
Золотой час на крыше: 4:17–5:09, закат в 4:53 и прогноз погоды
Золотой час на крыше: 4:17–5:09, закат в 4:53 и прогноз погоды
Сет по фото: палитра референса и три подходящих сета с объяснением
Сет по фото: палитра референса и три подходящих сета с объяснением
Код двери закрыт Face ID: открыть может только владелец телефона
Код двери закрыт Face ID: открыть может только владелец телефона
«Как войти»: код, этаж и Wi-Fi — откроется и без сети
«Как войти»: код, этаж и Wi-Fi — откроется и без сети
Live Activity «On set»: сет, время и обратный отсчёт на экране блокировки
Live Activity «On set»: сет, время и обратный отсчёт на экране блокировки
Абонемент, пакет часов и личная скидка применяются сами
Абонемент, пакет часов и личная скидка применяются сами
Карточка для Stories после съёмки: сет и дата, без имени и суммы
Карточка для Stories после съёмки: сет и дата, без имени и суммы

Технологии

Expo SDK 58 и React Native с общим ядром приложения команды. Витрина хранится на телефоне, поэтому со второго запуска первый экран открывается без ожидания сети. Сервер — тот же SetHub: 21 маршрут API для гостя, вход шестизначным кодом на почту, в базе — только хеши ключей, Stripe Checkout для брони, продления, абонементов и подарочных карт. Расчёт солнца — свой модуль по формулам NOAA, сверенный с таблицами.

Нативное — на Swift: Live Activity, App Intents для «Визуального интеллекта» и модуль «Вы рядом» на UNLocationNotificationTrigger. Для App Store подготовлено описание приватности, у всех кнопок-иконок есть подписи для VoiceOver. При проверке нашли утечку батареи — анимация фото внутри логотипа заставляла декодировать WebP на каждом кадре, полтора ядра процессора; анимацию перенесли на обёртку, и нагрузка упала в шесть раз. Приложение собрано и проверено на симуляторе iPhone и эмуляторе Android; публикация в App Store и Google Play — после регистрации аккаунта разработчика студии.

Хотите, чтобы клиенты бронировали напрямую?

Если вы платите площадкам комиссию за постоянных клиентов, приложение со своей бронью окупается быстро. Расскажите, как устроена ваша запись, — покажем, что можно перенести в телефон гостя.

WhatsApp