Мобильное приложение «Бетховен»
Android-клиент корпоративного портала на Kotlin Multiplatform
- Kotlin Multiplatform
- Jetpack Compose
- Material 3
- Ktor Client
- SQLDelight
- Koin
- ML Kit
- Firebase Cloud Messaging
- Задача
- Продавцу и директору магазина неудобно открывать веб-портал прямо со смены: телефон всегда под рукой, а ноутбук — нет. Нужен нативный клиент того же кабинета — корпоративного портала «Бетховен» (lk.petretail.ru): бонусы, отпуска, чат магазина, самовывоз — без потери ролевой модели и прав.
- Что сделал
- Kotlin Multiplatform: в модуле shared — Ktor Client, kotlinx.serialization, SQLDelight, репозитории, auth с автообновлением сессии и forced logout, конвертер TipTap→HTML; логика готова к переиспользованию на iOS. UI — Jetpack Compose + Material 3: type-safe навигация, ViewModel/Flow, Koin, Coil 3, светлая и тёмная темы, minSdk 26. Тот же bearer-API, что у веба, realtime по SSE, push через FCM, owner-scoped офлайн-кеш новостей и уведомлений. Сканер Data Matrix (КИЗ) на встроенной ML Kit-модели без сетевой догрузки, deep links и проверяемое sideload-обновление APK (SHA-256, package, versionCode).
- Результат
- Все 16 вертикальных этапов переноса кабинета закрыты с runtime-QA: новости с реакциями и комментариями, личные бонусы и аналитика магазина, отпуска, голосования, заметки, чат, подработки, барахолка, обратная связь, HR-раздел и самовывоз со сканером КИЗ, плюс push, офлайн-кеш и проверяемое обновление APK — с паритетом по всем 55 web-маршрутам и пяти ролям. Разработка AI-driven (Codex + Claude): архитектура, декомпозиция этапов и ревью — на мне. Распространение — sideload APK из админки портала, iOS — следующий этап на том же shared.