mamadra.dev EN

Senior Mobile Engineer · ArtStation @ Epic Games

Делаю мобильные приложения для сотен тысяч художников.

9+ лет в Android-разработке end-to-end. Сейчас веду новое поколение мобильных клиентов ArtStation на Kotlin Multiplatform — Compose Multiplatform на Android, SwiftUI на iOS — и параллельно поддерживаю нативный Android-апп с 300K+ установок.

Нови-Сад, Сербия Открыт к Mobile / KMP позициям

Android

01

7+ лет на одном продакшн-проекте. Java → Kotlin → Compose.

Kotlin Jetpack Compose Material 3 Coroutines · Flow Dagger 2 · KSP Room Retrofit · OkHttp Media3 / ExoPlayer

iOS

02

SwiftUI-экраны и интероп с Kotlin/Native в шейред-модулях.

Swift SwiftUI UIKit interop Swift Package Manager CocoaPods XCFramework Xcode build phases

Kotlin Multiplatform

03

Кросс-платформенное ядро фич: MVI, Decompose, Ktor, SQLDelight, Koin.

Kotlin Multiplatform Compose Multiplatform MVIKotlin Decompose Ktor 3 SQLDelight Koin kotlinx.serialization

Избранные проекты

Что реально ушло в прод.

ArtStation Android → KMP

Переписывание мобильных клиентов ArtStation на общем Kotlin Multiplatform-ядре (home / discover / project / profile / messaging / comments / login / collections / deeplinks / create-artwork) с Compose Multiplatform на Android и SwiftUI на iOS.

  • Общее ядро фич, потребляется и Android (Compose), и iOS (SwiftUI) клиентами.
  • MVI end-to-end (Intent → Executor → Reducer → State), ViewState-паттерн в UI.
  • Ktor + SQLDelight + Koin, экспорт в iOS как XCFramework через CocoaPods + Xcode build phase.
Kotlin Multiplatform Compose MP SwiftUI MVI Decompose Ktor SQLDelight

Epic Design System (EDS)

Кросс-платформенный KMP design system: семантические токены, enum-first компонент-API, Figma-naming 1:1, паритет Android ↔ iOS.

  • Слои токенов: EdsColors, EdsDimension, EdsBorderRadius, EdsAction, EdsFeedback, EdsTypography.
  • Enum-first API вместо рукодельных вариантов — расхождение между платформами становится compile-error.
  • ~37 фундаментальных компонентов в первом сосредоточенном спринте.
Design Tokens Compose SwiftUI XCFramework Theming

ArtStation API test framework

Python + pytest фреймворк под мобильный бэкенд ArtStation: fluent Response wrapper, Pydantic-схемы, role-matrix-селекция, параллельный xdist с per-worker изолированными стейджинг-пользователями.

  • Per-worker bootstrap стейджинг-юзеров — xdist не валится на общем стейте.
  • Маркер user_types для ролевой матрицы по всему сьюту.
  • File-cache reference-данных + coverage gap-анализ против iOS- и Android-клиентов.
  • CI: GitHub Actions с per-role summaries и авто-issue с пингом команды при падении.
Python pytest pytest-xdist Pydantic 2 Faker GitHub Actions

AI-assisted разработка и Spec-Driven Development

Ежедневный сетап для мобильной команды: Claude Code с авторскими агентами и slash-командами, интеграции через MCP, и SDD-процесс, прошитый в Jira и сборочный пайплайн.

  • Авторские агенты команды: code-review (ревью PR), build-verifier (гейт зелёной сборки до мёржа), apps-review-deck (агрегация отзывов из App Store / Play), my-jira-tasks (персональная поверхность Jira).
  • Авторские slash-команды: /feature (бутстрап spec → plan → tasks), /commit (conventional + линковка тикетов), /add-screen (скаффолд Compose + KMP-экрана).
  • Внедрение Spec-Driven Development в команду — структура .sdd/specs / plans / tasks / progress, у каждой нетривиальной фичи есть spec-документ и исполнимый план.
  • MCP-серверы прокинуты в Jira, Atlassian и локальный билд/тест-toolchain — агенты читают тикеты, гоняют чеки и пишут статус без переключений контекста.
Claude Code MCP Spec-Driven Development AI-агенты Jira-интеграция DX-инструменты

Pet-проекты

Что я делаю вне работы.

Личные проекты по JetBrains-плагинам, Wear OS, кросс-платформенной мобилке, инфраструктуре Telegram-ботов и bot-to-bot interop.

IDEgram

JetBrains-плагин, встраивающий Telegram прямо в IDE через TDLib, плюс TypeScript-бэкенд для шифрованного шеринга сниппетов. Два репозитория, шипятся одним продуктом на JetBrains Marketplace.

Kotlin IntelliJ Platform SDK Jewel / Compose TDLib (JNI) TypeScript Node + SQLite Caddy Ubuntu VPS

wearAuth

TOTP-аутентификатор с Wear OS Tile-компаньоном: AES256 локальное хранилище секретов, RFC 6238 коды, QR-онбординг, real-time синхронизация телефон ↔ часы через Wearable Data Layer.

Kotlin Wear OS Wearable Data Layer API Material 3 AES256 Google Play Billing

TMDb KMP app

Личный Kotlin Multiplatform-демонстратор вне работы — браузер фильмов / сериалов / персон TMDB на том же архитектурном стеке, что я использую профессионально.

Kotlin Multiplatform Compose Multiplatform MVIKotlin Decompose Ktor 3 Koin Coil 3

Telegram bot zoo

Несколько продакшн-ботов в Telegram на одном Ubuntu VPS — трекер цен на авиабилеты (Aviasales / Travelpayouts), Ozon-трекер через Playwright-скрапинг, и пара утилитарных ботов поменьше. Один общий стек на всех.

Python 3.11+ aiogram 3 APScheduler SQLite / aiosqlite Playwright httpx DigitalOcean / Ubuntu

Мост Discord ↔ Telegram

Пара ботов, мостящих Discord-канал и Telegram-чат — Discord-бот общается с Telegram-ботом и форвардит сообщения в обе стороны, давая каждой стороне окно в чужое комьюнити.

Python discord.py aiogram Bot interop

Опыт

Где я работал.

  1. Senior Mobile Engineer

    Май 2019 — настоящее время

    Epic Games · ArtStation · Нови-Сад, Сербия · Казань (до 2023)

    FTE в Epic Games с февраля 2023 (после релокации). До этого — контрактер на этом же продукте через прокладку (Balistiq, после покупки — Epic Games).

    • Ведущий инженер Android-приложения ArtStation: Java → Kotlin, ButterKnife → ViewBinding, Room K-migration, kapt → KSP, модернизация на AGP 8 / Gradle 8 / version catalog.
    • Веду следующее поколение мобильных клиентов на Kotlin Multiplatform — Compose Multiplatform (Android) и SwiftUI (iOS), MVI через Decompose + MVIKotlin, Ktor + SQLDelight + Koin.
    • Зарелизил create-artwork (multi-step асинхронный upload, drag-to-reorder, drafts) и редизайн OAuth2 / Epic SSO под требования security-команды через Chrome Custom Tabs + deeplinks.
    • Со-автор Epic Design System: Figma-driven токены, KMP-tokens + Compose / SwiftUI компоненты, жёсткий паритет API между платформами.
    • После перехода в FTE — лидирую мобильную команду: процессы, техническое направление, и при этом продолжаю много писать кода.
    • Авторство Python pytest-фреймворка для API-тестов команды и Claude Code агентов / slash-команд, интегрированных с Jira и пайплайном.
    Kotlin Kotlin Multiplatform Swift Compose SwiftUI Ktor SQLDelight Decompose MVIKotlin Koin Python pytest
  2. Mobile Lead / Android Engineer

    2017 — Май 2019

    iXat Taxi · Казань, Россия

    • Мульти-арендный Android-проект такси, продававшийся как white-label франшиза: общая бизнес-логика, у каждого таксопарка свой package, бренд и тема.
    • Рос из разработчика в тимлида: команда, ответственность за интерфейс заказчик ↔ команда, планирование.
    • Шипал множественные white-label клиенты на одной модульной кодовой базе, пока не закончилось финансирование.
    Android Java Kotlin Multi-module Gradle REST APIs
  3. Android Engineer

    2015 — 2017

    Впути · Казань, Россия

    • Заказная Android-разработка для внешних клиентов: в основном мульти-модульные приложения с общими инфраструктурными модулями на разных заказчиков.
    • Когда студия свернулась, костяк команды продолжил вместе в iXat Taxi.
    Android Java Multi-module Gradle

Навыки

Чем я работаю.

Языки

Kotlin Kotlin Multiplatform Swift Java Python Gradle Kotlin DSL

Android

Jetpack Compose Material 3 Android SDK ViewBinding RecyclerView WorkManager AndroidX Lifecycle AndroidX Navigation ExoPlayer / Media3 Glide Coil ARCore

iOS

SwiftUI UIKit Swift Package Manager CocoaPods XCFramework Kotlin/Native interop xcodegen xcodebuild

Multiplatform и архитектура

Kotlin Multiplatform Compose Multiplatform Decompose MVIKotlin MVI Clean Architecture Модуляризация Essenty

Сеть и данные

Ktor Retrofit OkHttp kotlinx.serialization Gson REST API design SQLDelight Room multiplatform-settings Offline-first

DI и реактивность

Koin Dagger 2 KSP Kotlin Coroutines Flow RxJava 2

Дизайн-системы

Design Tokens Figma-to-code Темизация Библиотеки компонентов Accessibility

Тестирование и SDET

pytest pytest-xdist Pydantic Faker JUnit MockK kotlin-test Ktor MockEngine Espresso Firebase Test Lab Allure

DevOps / build

GitHub Actions Gradle 8 + version catalogs Spotless / ktlint Kover ProGuard / R8 Firebase Crashlytics Firebase Cloud Messaging

Auth и безопасность

OAuth 2.0 OpenID Connect 2FA AppAuth Google Identity Facebook Login Epic Games SSO JWT

Процессы и AI tooling

Spec-Driven Development (SDD) .sdd/specs · plans · tasks · progress Claude Code Авторство кастомных агентов Авторство slash-команд MCP-серверы MCP ↔ Jira / Atlassian MCP ↔ сборочный пайплайн AI-ассистируемое код-ревью Cursor Техническая документация

Контакты

Давайте поговорим.

Лучше всего — почтой. Базируюсь в Нови-Саде, рассматриваю позиции в Mobile / KMP.