Lead Mobile Engineer 路 Android & Kotlin 路 iOS 路 Flutter 路 Kotlin Multiplatform
Based in Dubai, UAE 路 Building Mobile and cross-platform apps at Synechron
LinkedIn 路 Medium 路 DEV 路 Hashnode
I build mobile applications with clear architecture boundaries, reusable interface components, and testable application rules. My core specialization is native Android with Kotlin and Jetpack Compose, complemented by Kotlin Multiplatform and Compose Multiplatform projects.
My engineering focus spans application structure, UI state management, component reuse, data persistence, and automated verification. My public portfolio brings these concerns together through runnable applications, a reusable component library, focused unit tests, and documented build workflows.
Finance interfaces are a recurring theme in my work here, including account dashboards, transfer validation, transaction activity, and payment-related UI components.
- Application architecture: explicit boundaries between domain rules, data implementations, ViewModels, and Compose UI.
- Reusable components: shared presentation APIs packaged separately from their consuming application.
- State management: reactive data flows and read-only state exposed to the UI.
- Data handling: local persistence where required, with clear limits for in-memory demonstrations.
- Delivery discipline: documented setup, focused unit tests, and automated build workflows.
- Multiplatform development: shared Compose UI and app behavior with platform-specific entry points.
Android architecture and finance interactions
A fictional banking application demonstrating an account dashboard, transaction filters, validated transfers, spending insights, and card controls.
Engineering highlights
- Separates domain models and the repository contract from the in-memory data implementation and Compose screens.
- Uses a ViewModel to expose read-only dashboard state backed by StateFlow.
- Parses transfer input into integer minor currency units using decimal arithmetic.
- Validates missing recipients, invalid amounts, and insufficient funds before updating demo account state.
- Includes repository tests covering successful transfers and rejected operations.
- Configures GitHub Actions to run unit tests and assemble the debug APK.
Stack: Kotlin 路 Jetpack Compose 路 Material 3 路 ViewModel 路 StateFlow 路 JUnit
Scope: Local, fictional data held in memory. No backend, authentication, bank connection, or payment processing.
Architecture and setup 路 App preview
Reusable finance UI and library boundaries
A Jetpack Compose component library with a separate runnable demo application. The project demonstrates how finance presentation components can be packaged for integration into another Android app.
Engineering highlights
- Separates the reusable
composekitlibrary from the consumingdemomodule. - Provides balance cards, amount fields, transaction rows, account rows, budget summaries, and payment card previews.
- Includes transfer status and fee breakdown components.
- Supports enabled and loading action states, amount validation feedback, and selectable theme palettes.
- Keeps payment execution and financial data storage outside the presentation library.
- Includes amount-input policy tests.
- Configures GitHub Actions to run unit tests and assemble the demo APK.
Stack: Kotlin 路 Jetpack Compose 路 Material 3 路 Android Library 路 Gradle 路 JUnit
Scope: A portfolio UI library with fictional sample values. Components do not process payments or connect to a backend.
Component catalog and integration 路 App preview
Local persistence and reactive Android state
An offline pantry companion with expiry tracking, item search, category filters, shopping lists, and meal planning.
Engineering highlights
- Persists pantry entries through Room entities and a DAO.
- Observes database changes through Flow and exposes entries as ViewModel StateFlow.
- Uses coroutines for database writes.
- Separates expiry summaries and display rules into domain functions.
- Includes unit tests for expiry windows and date labels.
- Configures GitHub Actions to run unit tests and assemble the debug APK.
Stack: Kotlin 路 Jetpack Compose 路 Room 路 Coroutines 路 Flow 路 StateFlow 路 ViewModel
Scope: Pantry entries are stored locally on the device, without an account or cloud service.
Implementation and setup 路 App preview
Shared finance UI and platform integration
A Compose Multiplatform finance dashboard with sample account activity, demo transfers, card controls, and light and dark themes.
- Places shared Compose UI and application behavior in
commonMain. - Includes Android and desktop entry points.
- Provides an iOS Compose controller and device/simulator framework targets.
- Configures GitHub Actions to assemble Android and compile the desktop UI.
Stack: Kotlin Multiplatform 路 Compose Multiplatform 路 Material 3 路 Gradle
Scope: Fictional data held in memory. Building and launching an iOS application requires Xcode.
Project details 路 Android preview
Shared habit interactions and Compose UI
A multiplatform habit companion with daily check-ins, weekly progress, streak insights, and selectable Meadow, Sky, and Dusk themes.
- Shares Compose UI and habit behavior in
commonMain. - Includes Android and desktop entry points and an iOS Compose controller.
- Keeps the demonstration self-contained with session-based, in-memory state.
Stack: Kotlin Multiplatform 路 Compose Multiplatform 路 Gradle
Scope: Habit progress lasts for the current app session. Building and launching an iOS application requires Xcode.
Project details 路 Android preview
A calmer way to plan a trip
A Kotlin Multiplatform travel planner with a shared Compose interface for trip highlights, a five-day itinerary, budget tracking, and packing.
- Uses shared Compose UI across Android, the iOS framework, and desktop.
- Includes three visual themes, selectable itinerary days, a sample expense action, and a tappable packing checklist.
- Provides an Android launcher mark and a vector interface preview in the README.
- GitHub Actions successfully assembles Android, compiles desktop, and links the iOS simulator framework.
Stack: Kotlin Multiplatform 路 Compose Multiplatform 路 Material 3 路 GitHub Actions
Scope: Fictional Lisbon itinerary and sample prices. No travel service, map, account, or payment integration.
Project details 路 Interface preview
On-device storage and testable habit rules
A native Android habit tracker with daily check-ins, consecutive-day streaks, weekly insights, and selectable themes.
- Stores habit data in private app preferences across app restarts.
- Separates local storage from habit and progress rules.
- Includes unit tests for consecutive streak behavior and progress calculations.
- Configures GitHub Actions to run unit tests and assemble the debug APK.
Stack: Kotlin 路 Jetpack Compose 路 ViewModel 路 Local Preferences 路 JUnit
| Area | Technologies and practices |
|---|---|
| Core language | Kotlin |
| Android UI | Jetpack Compose, Material 3 |
| Application structure | Repository contracts, ViewModels, separated domain rules |
| Asynchronous work and state | Coroutines, Flow, StateFlow |
| Local storage | Room, app preferences |
| Multiplatform | Kotlin Multiplatform, Compose Multiplatform |
| Testing | JUnit, domain-rule tests, repository behavior tests |
| Build and workflow | Gradle, Git, GitHub Actions, Android Studio |
The repositories include implementation details, setup instructions, screenshots, and documented limitations. Finance projects use fictional data and demonstrate UI and application behavior.
