// mobile engineer
Rok Retar
I engineer Android and Kotlin Multiplatform systems — including migrating a company's iOS app to shared Kotlin.
Mobile development rooted in the Android ecosystem. I take Kotlin Multiplatform to production — one codebase serving two platforms without surrendering native feel. This page is built natively in Kotlin. Kotlin · KMP · Android · Kobweb / Compose for Web
// 01 — engineering
One codebase. Two platforms. Native discipline intact.
My specialization is the Android ecosystem and Kotlin Multiplatform. I treat the codebase as the source of truth: shared business logic, shared data layers, shared domain models — with UI remaining native where it earns its keep.I architected and executed a complete corporate migration, transitioning production systems to Kotlin Multiplatform for iOS. Shared Kotlin now backs an iOS app in the field — not a prototype, not a branch, a shipped product.The discipline is architectural, not ideological. Shared code goes where it reduces drift and risk; platform code stays where it delivers native performance and feel. The boundary is deliberate, tested, and enforced by module structure — domain never depends on data or UI.
01Shared domain and data layers; native UI where the platform earns it.
02Module boundaries that enforce dependency direction — domain stays pure Kotlin.
03KMP taken to production iOS, not demoed on a branch.
04The portfolio itself is built natively in Kotlin — the medium is the evidence.
// migrationProduction iOS now runs on shared Kotlin. The migration is complete and shipped — Android and iOS backed by a single Kotlin codebase.
// experience
Technology stack and specialization
I'm a mobile engineer based in Slovenia. Android is where I started, and Kotlin Multiplatform is where I ended up. The stack I reach for daily: Kotlin, Jetpack Compose, Compose Multiplatform, Kobweb, SQLDelight, SQLCipher, Ktor, Koin, and Decompose. The architecture I build is multi-module with strict dependency rules. Domain stays pure Kotlin. Data layers handle persistence and networking. UI stays native where the platform earns it. For Swift interop I use SKIE. For databases, SQLDelight with SQLCipher. Ktor handles networking, Koin handles DI, and Decompose handles navigation and lifecycle. This site is built in Kotlin with Kobweb and Compose for Web. If you're reading this, the proof is already loading.Production KMP migration
The headline work: migrating production iOS to shared Kotlin. I architected the whole thing. Shared business logic, data layers with SQLCipher encryption, domain models. All written once in Kotlin, compiled to a static Kotlin/Native framework. The iOS team plugged it in without adding a single linker flag. Android and iOS now run on one Kotlin codebase. In production. Shipping to real users. I've also shipped production apps in three very different domains. An AI platform with real-time chat, timelines, and push notifications. A gaming app with NFC, biometric auth, cashless payments, and whitelabel multi-app deployment. And Parrot, a cross-platform EPUB reader and audiobook player with Read-Aloud sync, e-ink support, and reading analytics. Each one pushed KMP in a different direction. Shared networking and database layers in one. Full shared UI with Compose Multiplatform in another.
// 02 — signature work
Parrot
A lightweight EPUB e-reader and audiobook player — the companion app for Storyteller, built for readers who want a calibrated, immersive experience over generic digital layouts.
01
Typography & text control
User-defined font configurations and pinch-to-zoom text sizing. Every reader calibrates type, size, margins, and line height to their own ergonomics.
02
Reading modes
Intuitive page-flip navigation and a true fullscreen mode that strips away every chrome element, leaving only the text. Dark, sepia, and a dedicated e-ink display mode.
03
E-ink adaptation
A display mode built specifically for e-ink screens — high contrast, no decorative motion, refresh behavior that respects the hardware. Crisp and natural on specialized devices.
04
Background audio
Audiobook playback that continues in the background with persistent system notification controls. Skip chapters, scrub, and set speed without ever opening the app.
05
Read-Aloud sync
Real-time, word-by-word highlighted text synchronization. As the narrator speaks, the text tracks the audio precisely — for language learners, developing readers, and anyone who reads with their ears.
06
Reading analytics
Automated local background analytics that map reading durations and calculate personalized reading-speed estimates per chapter. No servers, no telemetry — the math runs on-device.
07