The client is a retail technology provider that builds modern point-of-sale and store operations software for retailers in several markets.
The company is moving its client architecture off a legacy Java 8 Swing POS client toward a modular, offline-first, multi-platform model. It supports stationary POS terminals, self-checkout kiosks and self-scanning devices in varied retail settings.
The shared business logic is written in Kotlin Multiplatform and targets JVM/Desktop and Android. It holds the domain rules, use cases and data flows for item registration, checkout, payment, customer management and promotions, and stays independent of platform code and UI.
Offline operation, high testability and performance under real retail conditions are the top priorities.
The company has more than 1,200 IT professionals and 20 years of experience, with offices in Cluj-Napoca and Oradea. It works with major retail, manufacturing, finance and banking brands across the full digital lifecycle, from ideation and requirements to development and managed services.
Responsibilities
Define clean contracts for repositories, services, facades, DTOs and bridges between Kotlin, platform code and the VueJS/TypeScript UI.
Design, build and maintain shared KMP modules for POS capabilities that are clean, maintainable and fast on JVM/Desktop and Android.
Write platform-specific code for desktop and Android using expect/actual, keeping platform details out of shared business logic.
Build offline-capable flows with local storage, caching, readiness for synchronization and clear failure handling.
Write clean, well-structured code, review peers' work and refactor existing modules where needed.
Write automated tests for domain rules, use cases, repositories, bridge contracts and coroutine flows.
Work with frontend engineers, QA, product owners and architects to agree on contracts, requirements and delivery.
Share knowledge and mentor less experienced Kotlin developers when useful.
Follow team agreements and processes, and give regular updates on progress, trade-offs and technical decisions.
Requirements
8+ years of Kotlin experience, including making architecture decisions for KMP at platform scale, not only inside single apps or domain layers.
Hands-on KMP delivery to at least two targets, preferably Android and JVM/Desktop, plus KMP-Swift/iOS interoperability (XCFramework, expect/actual, Flow bridging). You will make cross-platform decisions that iOS developers can build on.
Experience migrating Java to Kotlin/KMP at platform scale.
Architectural leadership: you are comfortable working through ambiguity and proposing concrete solutions.
Experience designing modular product architectures with customer-specific extension points. Designing multi-tenant or multi-customer platforms is essential.
Ability to train engineers in modern KMP patterns and architectural thinking.
Clear communication with senior technical leaders, explaining trade-offs and building confidence in your approach.
Solid grasp of Clean Architecture: domain, use-case, infrastructure and platform layers, with dependency inversion and repository abstractions.
Practical use of Kotlin Coroutines and Flow: structured concurrency, suspend APIs, Flow-based state and events, cancellation and error propagation.
Experience with offline-first or local-first client architecture, including local persistence, caching, synchronization and conflict handling.
Familiarity with dependency injection, preferably Koin: constructor injection, module composition and test overrides.
Strong testing habits: unit and integration tests with Kotlin Test or similar, test doubles and coroutine test utilities.
Experience with REST/OpenAPI services: typed DTO mapping, serialization and resilient client-side communication.
Comfortable with Gradle Kotlin DSL, modular builds and CI-friendly project structures.
Good communication skills for working with frontend developers, QA and product stakeholders.
Compose Multiplatform experience.
Direct POS or retail embedded domain experience (checkout, payment terminals, scale integration, ESL) is a differentiator.
Desktop JVM client experience, especially Electron sidecar or local service integration.
Working knowledge of VueJS 3 and TypeScript for designing the Kotlin-to-UI bridge contract.
Experience with plugin or extensibility architecture: extension points, lifecycle management and isolation.
Performance engineering for latency-sensitive client operations, such as fast item scanning and payment flows.
Experience with POS, retail, payment, promotion or hardware peripheral integration.
Diversity is valued. Hiring decisions are based on merit, skills and performance, with no discrimination on any personal characteristic.
Conditions
Hybrid work arrangement in the Cluj-Napoca or Oradea offices.
Benefits
Wellbeing program covering social, physical, emotional wellbeing and work-life fusion.
Physical wellbeing: medical benefits, gym support, personalised fitness options, team events and the Healthy Habits Club.
Work-life fusion: flexibility to set a work-life dynamic that suits you.