Ищем в команду опытного full stack mobile developer.
Мы в KonnektU разрабатываем CRM (мобильное приложение) для фармацевтических компаний (медицинских представителей) для организации их работы, автоматизации бизнес-процессов (осмотры, чек-листы, отчёты, подписи, синхронизация данных) в офлайн-режиме.
Имеем государственную аккредитацию в области ИТ, являемся партнером MTC и резидентами Сколково.
ЗАДАЧИ:
- Разработка и поддержка двух нативных приложений (Android на Kotlin, iOS на Swift) — написание нового кода, доработка существующего, обеспечение паритета функциональности между платформами.
- Работа с офлайн-синхронизацией — реализация надёжного обмена данными с сервером при ограниченной связи, кэширование, разрешение конфликтов.
- Реализация сервер-driven UI — приём конфигураций с сервера, динамическое построение форм/экранов, валидаций, навигации без перевыпуска приложения.
- Интеграция с локальной базой данных— проектирование объектной модели, миграции, оптимизация запросов.
- Интеграция с веб-контентом — использование WebView (WKWebView) для отображения HTML-форм, организация мостов (бриджей) между JavaScript и нативным кодом для доступа к локальным данным и вызова нативных функций.
- Взаимодействие с бэкендом — описание и согласование API (желательно через OpenAPI/Swagger), использование моков для параллельной разработки, генерация клиентских моделей.
- Обеспечение безопасности — хранение токенов в Keychain/KeyStore, подпись запросов, TLS, защита от повторов (опыт с кастомным шифрованием для Bluetooth-протокола приветствуется).
- Тестирование — написание unit-тестов (бизнес-логика, валидаторы) и UI-интеграционных тестов (сквозные сценарии на симуляторах с моками сервисов).
- Участие в архитектурных решениях — выбор паттернов (MVP, MVVM, VIPER), организация слоёв (репозитории, use cases), адаптация под современные фреймворки (SwiftUI, Compose, App Intents).
- Работа с публикацией — сборка, подпись, выкладка (процесс уже отлажен, но требуются знания).
- Поддержка существующего кода — правка багов, рефакторинг, перенос фич с одной платформы на другую.
- Коммуникация — участие в обсуждении требований с аналитиками, продактом, проджектами.
- Отслеживание трендов — оценка кроссплатформенных решений (Flutter, KMP) и их применимость для продукта.
ТРЕБОВАНИЯ: - Android: Kotlin.
- iOS: Swift (включая SwiftUI), UIKit, работа с Core Data или SwiftData (опыт с Realm будет плюсом).
- Архитектурные паттерны: MVVM (основной), MVP, MVC – с пониманием их сильных и слабых сторон.
- Базы данных: Realm (понимание принципов объектных БД, миграций, многопоточности важно).
- Сеть: REST, работа с URLSession, Alamofire / KTOR (для Android — KTOR приветствуется как кросс-платформенное решение).
- Безопасность: Keychain / KeyStore, TLS, подпись запросов.
Дополнительные технические навыки (важные для продукта):
- Server-driven UI: опыт реализации динамических форм по конфигурации с сервера.
- WebView и JavaScript Bridge: работа с WKWebView / WebView, написание мостов для вызова нативных методов из JS и передачи данных обратно (понимание KVC, KVO, рефлексии в iOS; аналоги в Android).
- Офлайн-синхронизация: опыт проектирования фоновых задач, очередей, разрешения конфликтов при слабой связи.
- Работа с OpenAPI / Swagger: генерация клиентских моделей, использование спецификаций для параллельной разработки.
- Тестирование: JUnit / XCTest, Espresso / XCUITest, моки, стабы.
- Инструменты: Git, CI/CD (опыт с настройкой сборки приветствуется), Ansible (для DevOps-задач).
- Кроссплатформенность: понимание плюсов/минусов Flutter vs KMP vs натив; в перспективе компания рассматривает Flutter или KMP, поэтому взгляд кандидата на эту тему важен.
УСЛОВИЯ:
- работа с интересным продуктом в ИТ компании;
- современный стек, грамотная команда, отлаженные процессы;
- официальное трудоустройство согласно ТК РФ (оформление трудовых отношений только по трудовому договору);
- график работы: гибрид, c 9:00 - 18:00 по МСК;