I build mobile applications and spend a lot of time thinking about what happens behind the screen — architecture, data, reliability, and the parts that become difficult as a product grows.
I've been building mobile applications since 2017.
I started with Android and Kotlin, spent several years working with Java and Android, and later moved into Flutter as I started working on products where cross-platform development made sense.
Over the years I've worked on travel, healthcare, fintech, telecom, social and enterprise products. Most of my professional work isn't public, so this GitHub profile is where I keep the things I build to explore ideas, test architecture decisions, and learn something new.
At work, I've gradually moved from feature development into architecture, technical ownership, mentoring and working with product, design, QA and backend teams.
Android
Kotlin · Jetpack Compose · Coroutines · Flow · Room · WorkManager · Retrofit · Hilt
Flutter
Dart · BLoC · GetX · Clean Architecture · REST APIs · Firebase
Architecture
MVVM · Clean Architecture · Modularization · Offline-first applications · Local persistence · Synchronization
Engineering
Testing · CI/CD · GitHub Actions · Codemagic · Git
I'm currently spending more time on Kotlin Multiplatform, mobile system design and Kotlin backend development.
I wanted to understand the offline-sync problem from a shared-code perspective, so I built a small application with Kotlin Multiplatform.
The application is intentionally simple: users can add a name and age, even without an internet connection. Local changes are kept on the device and synchronized with the server when connectivity comes back.
The interesting part isn't the form itself. It's what happens when the network disappears.
Things explored:
- Kotlin Multiplatform
- Shared business and data logic
- SQLDelight
- Ktor Client
- Koin
- StateFlow
- Offline persistence
- Connectivity monitoring
- Synchronization
- Retry handling
The Android version of the same problem.
The app can be used without a network connection, stores changes locally, and synchronizes them with the backend once connectivity is restored.
I built this mainly to work through the architecture rather than the UI.
Tech stack:
- Kotlin
- Jetpack Compose
- MVVM
- Clean Architecture
- Hilt
- Room
- Retrofit / OkHttp
- WorkManager
- Coroutines
- Flow
The Flutter implementation of the same offline-first problem.
Building the same idea across Android, Flutter and KMP has been useful for comparing where the architecture can be shared and where each platform needs a different approach.
Focus areas:
- Flutter
- Dart
- Clean Architecture
- State management
- REST APIs
- Offline persistence
- Synchronization
A small developer tool I built for viewing and exploring JSON data.
It's one of my independent projects outside of my day-to-day mobile work.
Most of my professional experience comes from production applications, where the constraints are usually already there.
These projects give me a place to experiment with things I don't always get to try at work.
Recently that has meant:
- Offline-first architecture
- Synchronization
- Kotlin Multiplatform
- Mobile system design
- Shared business logic
- Kotlin backend development
Kotlin Multiplatform
↓
Mobile System Design
↓
Golang Backend Development
↓
Distributed Systems
I'm not presenting these as areas where I already have years of professional experience. I'm learning them because they are the natural next step from the mobile engineering work I've been doing for the last several years. A few things I'm interested in
- Mobile architecture
- Offline-first applications
- Kotlin Multiplatform
- Android and Kotlin
- Flutter
- Mobile system design
- CI/CD and release engineering
- Developer experience
- Building software that remains understandable as it grows Connect I'm currently open to:
- Senior Mobile Engineer
- Senior Android Engineer
- Senior Flutter Engineer
- Lead Mobile Engineer
- International opportunities and relocation
If you're working on an interesting mobile problem, feel free to reach out.


