.shot { transition: transform 0.5s cubic-bezier(0.23, 1, 0.32, 1); } .shot:hover { transform: translateY(-8px); }
A premium men’s club in Varna, Bulgaria, whose clients book, collect cashback and rate their visits in a native-feeling app — built once in Kotlin for iOS and Android, and wired to the salon’s CRM through a middleware that can outlive it.
Zeus is not a standard barbershop — it is a men’s club where the visit is the product. Its first-generation app was essentially a digital loyalty card, and the salon’s day-to-day ran in a cloud CRM: schedule, clients, records, cashback, reviews. Clients booked by phone, on the website or at the front desk; the app knew nothing about it.
What had to change:
Livotov Labs rebuilt the product in Kotlin end to end: a Kotlin Multiplatform app with Compose Multiplatform UI on both platforms, and a Ktor middleware that owns the mobile API and hides the CRM behind ports.
One shared codebase for iOS and Android on a custom design system (Composables UI + Lucide, no Material). VISCE architecture on OSKit, Koin, Ktor client. Bulgarian, English and Russian.
A Ktor backend on PostgreSQL that exposes a frozen 26-endpoint contract to the app and speaks to the CRM through eight ports. The vendor adapter is the only module that knows the vendor.
Provider-computed free slots with SWR caching and coalescing, idempotent writes, guest booking, reschedule and cancel, and a delta-poll sync of changes made at the front desk.
Cashback balance and tiers read from the salon’s programme, a 14-day review window per visit, passwordless phone sign-in with Ed25519 sessions and per-device rate limits.
A favourite barber and up to three services put that barber’s next free slots on the home screen; one tap books. Together with “Book again” it is the shortest path back to the chair.
Every change made at the desk reaches the client’s phone within seconds. The five home blocks can be shown, hidden and reordered per client. Bulgarian, English and Russian; light and dark; instant start from a local cache.
The engineering is the means. These are the outcomes the salon runs on.
Clients book real free slots themselves, move or cancel within the salon’s rules, and call only when the app says it is too late to change.
A change entered in the CRM is pushed to the client’s phone; a booking made in the app appears in the CRM. One source of truth, no double entry.
A favourite barber’s next free times on the home screen and “Book again” on the last visit turn a client who “should book soon” into a booked one.
Balance, tier and progress on the home screen, read from the salon’s own programme. The cashback card finally earns its place.
The CRM sits behind a middleware. If the salon outgrows it, the app does not know — zero app releases for a CRM switch.
Both Varna branches in one app with their own hours, teams and prices. Adding a branch is configuration.








Barbershops, beauty salons, dental practices, gyms, car services, pet groomers — anywhere clients book a person or a chair and come back. Swap the vocabulary and the CRM adapter; the app, the middleware and the loyalty stay.
What you bring, what we deliver
If your clients still book by phone, this is the page to send us from.
The second generation went live on 23 September 2026. Read the launch announcement →