Mobile

Zapys24 Mobileзастосунки запису для iOS та Android

Клієнт записується з телефона, бізнес веде день між прийомами

Два застосунки на React Native в App Store і Google Play: один для клієнтів, які записуються, другий — для бізнесів, які їх приймають.

Zapys24 Mobile — застосунки запису для iOS та Android
Задача

Обидві сторони запису діють з телефона, але з протилежними задачами — один застосунок для всіх був би незручним кожному.

Результат

Два застосунки на Expo з одним бекендом: клієнтський — пошук на карті, запис і пуш-сповіщення; Zapys24 Pro — розклад і персонал. Обидва опубліковані в App Store і Google Play.

Ключові функції

  • Два застосунки, один API
  • Пошук на карті (Mapbox)
  • Пуш-сповіщення (Firebase)
  • Запис і розклад
  • App Store і Google Play
  • Завантаження фото
  • Deep linking
  • Спільна дизайн-система

Як це побудовано

Два застосунки на React Native поверх API Zapys24: один для клієнта, який записується, другий для бізнесу, який веде день. Обидва опубліковані в App Store і Google Play. Ось рішення, які їх сформували.

2
Застосунки, один бекенд
iOS
App Store
Android
Google Play
0
Спільних екранів

Два застосунки, а не один із перемикачем

У клієнта й власниці салону спільного майже немає: один дивиться, записується й отримує нагадування; друга цілий день працює з календарем, персоналом, клієнтами й грошима. Зведення обох під прапорець ролі дає застосунок, у якому половина навігації завжди зайва.

Тому вони виходять окремо, але проти того самого API. Клієнтський спирається на карту й пошук, бізнесовий — робочий інструмент із календарем у центрі. І тоді кожна сторінка в сторі описує одну річ, чого й чекають на рев’ю.

Знайти салон, а не список салонів

У клієнтському застосунку карта стоїть першою: геолокація пристрою, рендер на Mapbox і результати, привʼязані до того, що справді поруч, а не до списку по всій країні. Запис відкривається шторкою поверх карти, тож вибір часу не коштує розуміння, де це місце.

Пуші, які виправдовують дозвіл

Сповіщення йдуть через Firebase Messaging на обох платформах і категоризуються на сервері, тож нагадування про завтрашній візит і акція — це не одна підписка.

Дозвіл питаємо тоді, коли він має сенс — після того, як запис уже є, — а не на першому запуску. Застосунок, який спалює запит на старті, втрачає саме той канал, який йому потрібен.

Швидко на поганому звʼязку

Серверний стан кешує React Query, а те, що має пережити холодний старт, лягає в MMKV — достатньо швидке, щоб читати синхронно, поки малюється перший екран. Токени живуть у захищеному сховищі платформи, ніколи у звичайному.

Завдяки цьому застосунок на мобільному інтернеті одразу показує вчорашній розклад і за мить його уточнює, замість того щоб крутити спінер.

Чого вимагали сторі

Підписки, куплені в застосунку, перевіряються на сервері через бібліотеку App Store Server — доступ дає чек, а не пристрій. Видалення акаунта доступне і всередині застосунку, і у вебі, бо обидва сторі цього вимагають.

Збірки й публікації йдуть через Expo, що тримає нативний проєкт поза репозиторієм, а реліз — в одній команді.

Результат

Два застосунки в продакшені в App Store і Google Play зі спільним NestJS-бекендом разом із веб-кабінетом: клієнти записуються з карти, бізнес веде день із телефона.

Наступний проєкт
Web

SIMILIA Studio

Клієнти самі бронюють студію — без накладок у календарі

Дивитися кейс
SIMILIA Studio — бронювання фотостудії

Хочете щось подібне?

Розкажіть про ваш проєкт і ми створимо його з такою ж увагою до деталей.

Почати проєкт →