Перейти к содержимому
КейсМобильное приложение для сети студий красоты

Android-приложение NailLounge для онлайн-записи в студии

Разработали отдельный Android-канал для NailLounge: booking-first приложение на Jetpack Compose, где клиент выбирает услугу, студию, мастера, дату и время, а запись создаётся через защищённый cache/proxy-слой с источником mobile_app.

Booking-first Android UX: услуга → студия → мастер → дата/время → подтверждение
Cache API для салонов, услуг, мастеров, доступных дней, слотов, warmup и POST /mobile/book
Compose + Hilt + Retrofit + AppMetrica, проверка крупного шрифта и high contrast на Pixel

Итог: Собран проверяемый MVP-контур Android-приложения: фирменный Material 3 UI, навигация записи, профили студий и мастеров, интеграция с Nail-Lounge-Cache, AppMetrica-события и roadmap до production-релиза без раскрытия YCLIENTS-токенов.

7

ключевых экранов booking-flow в MVP

3

канала NailLounge связываются через одну booking-архитектуру

1.8×

font scale, который учитывается в Android UX-проверках

API key

мобильный клиент не хранит YCLIENTS partner token

01 / Brief

С чем пришёл клиент

Нужно было собрать нативный канал записи: с реальными студиями, услугами, мастерами и свободными окнами из общего серверного контура.
01

После запуска сайта и Telegram Mini App у NailLounge появился следующий продуктовый слой: нативный Android-канал, где постоянный клиент может записаться без браузера, сохранить любимую студию и быстрее вернуться к повторной записи.

02

Приложение нельзя было делать отдельной витриной с собственной логикой: источником правды остаются YCLIENTS и Nail-Lounge-Cache, а дизайн должен продолжать брендовую систему студий — espresso, cream, ember, крупные CTA и спокойные motion-состояния.

03

Главный риск мобильного релиза — безопасность и нагрузка на расписание. Нативный клиент не должен хранить чувствительные iClient/YCLIENTS-токены, а запросы дат и слотов должны проходить через proxy/cache-слой с warmup, idempotency и диагностикой.

02 / Execution

Как мы это решали

Решения следуют реальному пути клиента: от первого экрана и выбора услуги до свободного слота, подтверждения и защищённого создания записи.

1

MVP как единый booking-маршрут

В приложении собран маршрут Home → Services → Studios → Masters → DateTime → Confirm → Success, плюс экраны салонов, профиля мастера, визитов и профиля клиента. Выборы сохраняются в состоянии навигации, чтобы пользователь не терял контекст между шагами.

2

Cache API вместо прямого раскрытия токенов

Android вызывает Nail-Lounge-Cache через Retrofit и X-API-Key: salons, services, masters, nearest-slots, available-days-summary, slots, warmup-hint и mobile book. Чувствительные YCLIENTS/iClient данные остаются на серверной стороне.

3

Предзагрузка доступности до открытия календаря

При выборе услуги, студии или мастера приложение отправляет warmup-hint, затем грузит summary дней и prefetch ближайших слотов. Повторный тап по дате может отработать из свежего in-memory cache, а аналитика фиксирует источник network, prefetch или memory.

4

Any master и «Молчаливый мастер» как реальные сценарии

MVP поддерживает выбор конкретного мастера или любого доступного мастера, а услуга «Молчаливый мастер» вынесена в отдельный toggle. При создании записи этот контекст попадает в comment и source mobile_app.

5

Доступность до визуальной полировки

Приложение проектируется под Android-реальность: 44dp touch targets, читаемая плотность, high text contrast, font_scale 1.8, safe zones и сценарий без hover-зависимостей. На Pixel уже зафиксирована необходимость тестировать крупный системный шрифт.

6

Аналитика как часть продукта

AppMetrica встроена как отдельный AnalyticsTracker. События booking_dates_load_success, booking_slots_prefetch_success, booking_submit_success/error и ошибки загрузки позволяют видеть не только факт записи, но и место потери клиента.

03 / Design system

Мобильная версия Studio Ember

Android-приложение наследует дизайн-систему сайта, но переводит её на Material 3: тёмная espresso-сцена, кремовые панели, один яркий orange-action, крупные нижние CTA и понятные состояния загрузки/ошибки/успеха.

01

Compose tokens

Палитра зафиксирована в ui/theme: DarkPrimary #F97316, DarkBackground #1D1410, DarkSurface #251912, LightBackground #FBF5E8. Голубого focus-цвета в Android-контракте нет.

02

Material 3 без шаблонности

Используем привычные Android-паттерны — bottom CTA, карточки выбора, календарь, списки мастеров — но сохраняем брендовый характер NailLounge через цвет, плотность и tone of voice.

03

Readable density

MvpReadableDensity защищает ключевой сценарий от поломки на крупном системном шрифте: интерфейс остаётся плотным, но не превращается в мелкий desktop-макет на телефоне.

04

Motion как обратная связь

Анимации не отвлекают от записи: лёгкий вход экранов, состояния загрузки дат/слотов, акцент на выбранном времени и спокойный success state после создания записи.

04 / Android app

Как выглядит мобильный сценарий записи

Визуальный блок собран из реальных экранов Android-приложения: быстрый старт на главной, выбор услуги, выбор мастера, свободные слоты и финальная проверка записи.

01 / 05

Главная с быстрой записью

Клиент видит выбранную услугу, салон, мастера и ближайшее окно прямо на первом экране.

02 / 05

Выбор услуги

148 услуг, поиск, категории и отдельный toggle для сценария «Молчаливый мастер».

03 / 05

Выбор мастера

Есть сценарий «Любой мастер», рейтинги, фото сотрудников и переход к профилю мастера.

04 / 05

Дата и свободные слоты

Календарь показывает плотность доступности, а выбранное время фиксируется sticky CTA.

05 / 05

Проверка записи

Финальный экран собирает время, услугу, мастера, студию и контакты перед подтверждением.

1 / 5

04 / Stack

На чём собрано

Технический стек показан как производственная схема: интерфейс, интеграции и инфраструктура поддерживают одну цепочку записи.

Android

  • Kotlin 2.4, Gradle 9.4, AGP 9.2, JDK 17
  • Jetpack Compose BOM 2026.06.01 и Material 3
  • Navigation Compose, Lifecycle runtime, SplashScreen
  • minSdk 24, compileSdk/targetSdk 37

Архитектура

  • Clean Architecture: domain, data, ui, di
  • Hilt 2.60, KSP, repository interfaces и ViewModel StateFlow
  • Retrofit + OkHttp + kotlinx.serialization
  • TokenStore, AppSettingsStore и NoOpCacheService как сменяемый contract

Интеграции

  • Nail-Lounge-Cache: salons, services, masters, available-days-summary, slots, warmup-hint, mobile book
  • YCLIENTS API как fallback/read layer в текущем MVP
  • AppMetrica AnalyticsTracker для booking_* событий
  • Coil 3 для медиа студий и мастеров

Вопросы, которые чаще всего задают по проекту

Коротко по техническим и продуктовым решениям NailLounge.