.shot { transition: transform 0.5s cubic-bezier(0.23, 1, 0.32, 1); } .shot:hover { transform: translateY(-8px); }
News · 17 September 2026

Zeus Barbershop goes second generation:
one app, one middleware, every platform.

We have shipped the new Zeus Barbershop client app for iOS and Android and the middleware behind it. Both were rebuilt from scratch in Kotlin: one shared codebase for the two platforms, and a backend that keeps the salon’s CRM swappable without touching the app.

Zeus Barbershop app: Book, Home and Confirm your booking screens
Released
16 Sept 2026
Platforms
iOS & Android
App
Kotlin / Compose Multiplatform
Backend
Ktor middleware

For clients

Booking in under a minute

The first generation of the app was a loyalty card with a booking form attached. The new one is built around the visit itself: the home screen shows the live cashback balance and the last visit with a one-tap “Book again”, and a booking can start from a service or from a barber — whichever the client thinks of first.

Two ways in

Start from the service or from the barber. Barbers carry their grade (Junior, Barber, Senior, Top, Chief), rating and review count; the “any barber” option lets the salon assign one.

Real free slots

Morning, afternoon and evening slots come from the salon’s live schedule, so the app never offers a time the front desk would have to move.

Slide to book

The confirmation screen lists barber, time, services, price range, accepted payment methods (cash, card, Apple Pay, Google Pay) and how much of the bill the cashback balance can cover.

Guest booking

A visit can be booked with just a name and a phone number. Signing in — a one-time code to the phone, no passwords — is needed only to see, move or cancel bookings.

Cashback loyalty

The Zeus cashback card lives on the home screen with its current balance; tiers and progress are read from the salon’s own loyalty programme, not re-implemented in the app.

Reviews and the salon

Clients rate a visit for 14 days after it, read the salon’s reviews, and find opening hours, directions, call, message and website in one place. Bulgarian and English out of the box.

Screens

The booking flow, as shipped

Home: cashback card and last visit
Home: cashback card and last visit
Book: by service or by barber
Book: by service or by barber
Services with duration and price
Services with duration and price
Choose a barber: grade, rating, reviews
Choose a barber: grade, rating, reviews
Date and time: live free slots
Date and time: live free slots
Confirm: slide to book
Confirm: slide to book
About the salon
About the salon
Extra booking via the front desk
Extra booking via the front desk

The same code runs on Android. Below: the Android build in Bulgarian.

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

Under the hood

A middleware that outlives the CRM

The app never talks to the CRM directly. A Ktor middleware — the Zeus backend — owns the mobile API contract and translates it to whatever the salon runs today. The contract is frozen and test-enforced, so a CRM switch is a backend change with zero app releases.

One contract, 26 endpoints

The mobile API is a versioned, documented specification with an OpenAPI export that is test-equal to the docs. DTOs mirror it byte for byte; the error catalogue is enforced by tests.

CRM behind ports

Branches, services, staff, availability, clients, records, loyalty and reviews are eight ports. The CRM adapter is the only module allowed to know the vendor; the architecture test keeps it that way.

Provider-computed availability

Free slots are computed by the CRM and normalised by Zeus, with stale-while-revalidate caches and request coalescing so a busy Saturday morning does not turn into a CRM outage.

Content overlay

Rich fields the CRM lacks — localised descriptions, grades, hero images with BlurHash placeholders, opening-hours text — live in Zeus’s own store and are merged per locale.

Safe writes

Every booking write carries an idempotency key, retries replay the original response, and salon-side changes (a move at the front desk, a walk-in cancellation) are picked up by a delta-poll job.

Passwordless identity

Sign-in is a one-time code to the phone; sessions are Ed25519-signed tokens with rotation and theft detection. Rate limits per device and IP guard the anonymous endpoints.

Engineering

What it took

  • Kotlin end to end. The app is Kotlin Multiplatform with Compose Multiplatform UI on both platforms; the backend is Kotlin on Ktor with PostgreSQL. One language, one architecture (VISCE), one set of conventions across mobile and server.
  • Custom design system. No Material: the UI is built from Composables UI primitives and Lucide icons on Zeus’s own tokens, so the app looks like the brand, not like a framework.
  • Contract-first. The mobile API was written, reviewed and frozen before the first backend stage; route tests run against both a fake CRM and recorded fixtures of the real one.
  • Production-grade from day one. Structured logs with redacted phone numbers, Prometheus metrics, a circuit breaker and bulkhead around the CRM, a security audit with its findings fixed, runbooks and a launch checklist — 200+ automated tests keep it honest.
  • Store-ready. Framed store screenshots in English and Bulgarian, sandbox accounts for app-store review that never reach the CRM, and a Dockerised release pipeline.

Availability

The new app is rolling out to Zeus Barbershop clients on the App Store and Google Play as an update to the existing app; the middleware has been live in production since 16 September 2026. Read the full story on the Zeus Barbershop case-study page.

© 2026 Livotov Labs • Masterfully Engineered in Europe, Bulgaria