Как KMP в очередной раз уделал Flutter: кейс мобильного приложения для бронирования жилья
Когда Flutter не справляется, на помощь приходит KMP: реальная история о том, как нативный интерфейс и правильно выбранная технология преобразили бизнес отельеров
Привет, это KTS. Помните статью нашего управляющего партнёра Максима Павлова, где он рассказал, в каких ситуациях Kotlin Multiplatform (KMP) побеждает Flutter? Тогда комментарии буквально взорвались — было всё: споры, аргументы, жаркие обсуждения…
Мы решили не оставлять тему без продолжения. Принесли реальный кейс, где KMP показал себя во всей красе. Это история про отели, шахматку и то, как нативный интерфейс сделал жизнь отельеров гораздо проще. Поехали!
Удобное приложение вместо блокнотов и неудобного веба
«Куда на море» — агрегатор объявлений для аренды гостиниц и отелей на юге России. Отельеры оплачивают подписку, размещают свои объекты, а пользователи бронируют номера через сайт.
Однако вести учет бронирований номеров на сайте было неудобно, поэтому отельеры редко его использовали и предпочитали вести учёт на бумаге или в заметках на телефоне.
- Отельеры редко обновляли статусы номеров. Когда под рукой не было ноутбука, они вели учет бронирований в бумажных блокнотах. Зафиксировать информацию о клиентах на сайте через смартфон не всегда получалось: веб-версия тормозила и долго загружалась с мобильного интернета.
- Пользователи сталкивались с неудобствами, например, номера, отмеченные как свободные, были уже заняты.
Клиент хотел разработать мобильное приложение, которое заменило бы бумажные записи и обеспечило удобный инструмент для управления бронированиями.
Приложение должно было:
- Побудить отельеров чаще обновлять данные;
- Работать плавно даже при большом объёме данных;
- Работать офлайн и синхронизироваться с сервером при появлении сети.
«Мы начали с подрядчиком, который предложил выгодную цену на Flutter. Но уже на первом важном экране — шахматке — возникли проблемы с производительностью. KTS оперативно предоставил готовую демо на основе KMP, и я выбрал их решение»
Почему Flutter не справился с задачей, а KMP стал идеальным решением
Клиент планировал создать приложение с командой Flutter-разработчиков. Но у них возникли сложности: интерфейс зависал, обработка данных занимала слишком много времени, а главную фичу приложения не удалось сделать плавной и отзывчивой.
Тогда клиент обратился в KTS. Вместо Flutter мы предложили использовать Kotlin Multiplatform (KMP). Эта технология позволяет создавать нативные и производительные интерфейсы для каждой платформы, сохраняя при этом возможность переиспользования бизнес-логики для iOS и Android.
Чтобы продемонстрировать возможности KMP, мы за два дня разработали прототип шахматки. Интерфейс работал плавно, а приложение обрабатывало тысячи бронирований одновременно. Этот результат и убедил клиента работать с нами.
Шахматка бесконечности
Ключевая функция приложения — шахматка, где строки — это номера, а колонки — дни и месяцы. Она обеспечивает удобное визуальное управление статусами номеров.
В мобильном приложении были реализованы:
- Бесконечная прокрутка и удобный выбор дат. Благодаря Jetpack Compose в приложении есть бесконечная прокрутка календаря, которая обеспечивает плавную работу интерфейса даже при больших объемах данных. Это особенно важно для отельеров, ежедневно управляющих десятками бронирований. Также был добавлен удобный календарь для выбора дат, похожий на Airbnb.
Управление статусами номеров с цветовой маркировкой. Например, «ждем предоплату» или «требуется уборка».
Добавление новых объектов. Возможность создавать новые номера или гостиницы прямо из приложения.
Синхронизация офлайн. Учитывая работу в условиях нестабильного интернета, мы добавили офлайн-режим. Он сохраняет изменения и автоматически синхронизирует их при появлении сети.
«Предыдущий опыт реализации системы синхронизации в offline-first приложениях для ПИК и KLEO позволил сразу реализовать оптимальную синхронизацию в приложении “Куда на море”. В частности, было реализовано обновление только измененных данных и многопоточная загрузка больших объемов информации»
Результат: отдых без сбоев, бизнес без границ
«Куда на море» — это не просто агрегатор, а полноценная PMS-система для управления бронированиями.
В шахматкеинформация о доступности номеров и квартир отображается в режиме реального времени. Отельеры могут обновлять данные о номерах, находясь вдали от офиса или компьютера. Да, в горах или у моря тоже можно управлять бронированиями.
Гости реже сталкиваются с ситуациями, когда выбранный номер оказывается занят. Они видят актуальную информацию и не переживают за свой отпуск.
Кроме того, приложение открыло новые возможности для владельцев бизнеса — оно оказалось настолько удобным, что отельеры использует его для учета аренды автомобилей. Вместо гостиничного объекта они создают в личном кабинете свой автопарк и отмечают в приложении арендованные автомобили.
«KMP, как и Flutter, и любая другая технология, — это не универсальное решение и не серебряная пуля. В случае с “Куда на море” ключевой задачей было создание нетипового интерфейса, который оставался бы отзывчивым и плавным даже при работе с большими объемами данных. В отличие от Flutter, накладывающего ограничения на реализацию интерфейсов, KMP справился с этим безупречно»
Итого: в этом раунде (снова) с уверенностью присуждаем победу KMP.
Мы в KTS создаём мобильные приложения для самых разных задач. В нашем списке:
Откуда взяли моё фото?)
Это секретная информация!)
Ждал от вас статью, в чем конкретно flutter "тормозил", если не привязываться к навыкам разработки прошлого аутсорс агенства?)
:)
не знаю читает ли эту статью "куда на море", но скажу что вы ещё вспомните тот день когда выбрали KMP)
ну вы конечно накинули на вентилятор...)
Выберу язык фактов. Застройщик Мангазея за 3 года ни разу не вспомнил в негативном ключе день, когда мы выбрали для их приложения именно KMP хотя и приложение сложное и развивали его в том числе разработчики, которых они наняли к себе в штат
https://vc.ru/life/1043642-peresest-s-igly-korobochnogo-resheniya-na-sobstvennoe-mobilnoe-prilozhenie-za-polgoda-keis-moskovskogo-zastroishika