Case study · Product & engineering lead

Nabz — a calm companion through medical tests

Nabz is a patient-first health app by Azma. Its mission: give people going through treatment a sense of safety, calm and ease. I lead the product and build it end to end — the Kotlin Multiplatform app, the Ktor backend, the admin panel and the infrastructure.

Status: live on Cafe Bazaar, Iran's Android store — since October 2026

Nabz

The problem

Lab tests are stressful. People don't know how to prepare, what a test is for, or what their results mean — and their results end up scattered across paper and chat apps. Most health apps add noise: ads, pressure, alarming language.

What it does

Test encyclopedia

Plain-language explanations of common lab tests.

Preparation guides

What to do before a test — fasting, medication, timing.

Private results archive

Results stay on the device; nothing is uploaded without consent.

Medication reminders

Local reminders that work offline.

Nabz service

Request help; the team follows up personally.

Architecture

Kotlin Multiplatform app

Shared UI, ViewModels, repositories, networking and storage in commonMain with Compose Multiplatform; Android ships first, desktop runs from the same code.

MVVM with clear boundaries

Koin for DI. Screens never talk to the API client or the database directly — only through repositories.

Offline-aware data layer

Ktor client plus Room KMP (8 local tables) with a cache and invalidation strategy.

Ktor backend

Routes → services → Exposed → PostgreSQL (19 tables), 80+ endpoints with authentication and rate limits, an HTML + JSON admin panel.

Auth that respects users

Phone OTP via SMS, short-lived JWT access tokens, rotating refresh tokens stored only as hashes, automatic refresh on 401.

Shipping

Docker Compose on a VPS behind nginx, FCM push, documented endpoints and data flow for every screen.

Product decisions I'm proud of

Need a product like this built?

Let's talk