.shot { transition: transform 0.5s cubic-bezier(0.23, 1, 0.32, 1); } .shot:hover { transform: translateY(-8px); }
Новини · 17 септември 2026

Zeus Barbershop, второ поколение:
едно приложение, един middleware, всички платформи.

Пуснахме новото клиентско приложение на Zeus Barbershop за iOS и Android и middleware-а зад него. И двете са написани отначало на Kotlin: една обща кодова база за двете платформи и бекенд, който позволява смяна на CRM системата на салона, без да се пипа приложението.

Zeus Barbershop app: Book, Home and Confirm your booking screens
Пуснато
16 септ. 2026
Платформи
iOS и Android
Приложение
Kotlin / Compose Multiplatform
Бекенд
Ktor middleware

За клиентите

Резервация за под минута

Първото поколение на приложението беше карта за лоялност с прикачена форма за резервация. Новото е построено около самото посещение: началният екран показва актуалния cashback баланс и последното посещение с „Запази отново“ с едно докосване, а резервацията може да започне от услуга или от бръснар — според това, за което клиентът се сети първо.

Два входа

Започвате от услугата или от бръснаря. Бръснарите носят своето ниво (Junior, Barber, Senior, Top, Chief), рейтинг и брой отзиви; опцията „който и да е бръснар“ оставя избора на салона.

Реални свободни часове

Слотовете за сутрин, ден и вечер идват от live графика на салона, така че приложението никога не предлага час, който рецепцията после да мести.

Плъзнете, за да запазите

Екранът за потвърждение показва бръснар, час, услуги, ценови диапазон, приеманите начини на плащане (в брой, карта, Apple Pay, Google Pay) и каква част от сметката покрива cashback балансът.

Гост-резервация

Посещение се запазва само с име и телефон. Вход — еднократен код на телефона, без пароли — трябва само за преглед, преместване или отказ на резервации.

Cashback лоялност

Cashback картата на Zeus стои на началния екран с текущия си баланс; нивата и прогресът се четат от собствената програма за лоялност на салона, а не се преизмислят в приложението.

Отзиви и салонът

Клиентите оценяват посещение до 14 дни след него, четат отзивите на салона и намират работно време, упътване, обаждане, съобщение и сайт на едно място. Български и английски по подразбиране.

Екрани

Процесът на резервация, както е пуснат

Начало: cashback карта и последно посещение
Начало: cashback карта и последно посещение
Запази час: по услуга или по бръснар
Запази час: по услуга или по бръснар
Услуги с времетраене и цена
Услуги с времетраене и цена
Избор на бръснар: ниво, рейтинг, отзиви
Избор на бръснар: ниво, рейтинг, отзиви
Дата и час: live свободни слотове
Дата и час: live свободни слотове
Потвърждение: плъзнете, за да запазите
Потвърждение: плъзнете, за да запазите
За салона
За салона
Екстра резервация през рецепцията
Екстра резервация през рецепцията

Същият код върви и на Android. По-долу: Android билдът на български.

Zeus Barbershop Android app, home screen in Bulgarian
Zeus Barbershop Android app, booking screen in Bulgarian

Под капака

Middleware, който надживява CRM системата

Приложението никога не говори директно с CRM-а. Ktor middleware — Zeus бекендът — притежава API контракта за мобилното приложение и го превежда към това, което салонът ползва днес. Контрактът е замразен и се проверява с тестове, така че смяната на CRM е промяна в бекенда с нула релийзи на приложението.

Един контракт, 26 endpoint-а

Мобилното API е версионирана, документирана спецификация с OpenAPI експорт, равен на документацията по тестове. DTO-тата я следват байт по байт; каталогът от грешки се проверява с тестове.

CRM зад портове

Обекти, услуги, персонал, свободни часове, клиенти, записи, лоялност и отзиви са осем порта. CRM адаптерът е единственият модул, който познава вендора; архитектурният тест го гарантира.

Свободни часове от провайдъра

Свободните слотове се изчисляват от CRM-а и се нормализират от Zeus, със stale-while-revalidate кешове и обединяване на заявките, за да не се превърне натоварената събота сутрин в срив на CRM-а.

Content overlay

Богатите полета, които CRM-ът няма — локализирани описания, нива, hero изображения с BlurHash плейсхолдъри, текст за работно време — живеят в собственото хранилище на Zeus и се сливат по локал.

Безопасни записи

Всяко записване на резервация носи idempotency ключ, повторните опити връщат оригиналния отговор, а промените от страна на салона (преместване от рецепцията, отказ на място) се улавят от delta-poll задача.

Идентичност без пароли

Входът е еднократен код на телефона; сесиите са Ed25519-подписани токени с ротация и засичане на кражба. Rate limit-и по устройство и IP пазят анонимните endpoint-и.

Инженеринг

Какво беше нужно

  • Kotlin от край до край. Приложението е Kotlin Multiplatform с Compose Multiplatform UI и на двете платформи; бекендът е Kotlin на Ktor с PostgreSQL. Един език, една архитектура (VISCE), едни конвенции за mobile и сървър.
  • Собствена дизайн система. Без Material: UI-ят е изграден от Composables UI примитиви и Lucide икони върху собствените токени на Zeus, така че приложението изглежда като бранда, а не като фреймуърк.
  • Contract-first. Мобилното API беше написано, ревюирано и замразено преди първия етап на бекенда; route тестовете вървят и срещу фалшив CRM, и срещу записани отговори на истинския.
  • Production-grade от първия ден. Структурирани логове с маскирани телефони, Prometheus метрики, circuit breaker и bulkhead около CRM-а, security одит с отстранени находки, runbook-ове и launch checklist — 200+ автоматизирани теста го държат честен.
  • Готово за магазините. Рамкирани store скрийншоти на английски и български, sandbox акаунти за ревю от магазините, които никога не стигат до CRM-а, и Docker-изиран release pipeline.

Наличност

Новото приложение се разпространява към клиентите на Zeus Barbershop в App Store и Google Play като ъпдейт на съществуващото; middleware-ът е live в продукция от 16 септември 2026. Прочетете цялата история на страницата на проекта Zeus Barbershop.

© 2026 Livotov Labs • Майсторски разработено в Европа, България