ПроєктиПроєкт для клієнта

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