Заказчик — B2B-платформа, которая предоставляет сотрудникам крупных корпораций доступ к эксклюзивным скидкам: массаж со скидкой 70%, аренда яхт, спецпредложения в ресторанах и спа-салонах. Модель простая: компания-работодатель покупает доступ к платформе и выдаёт его сотрудникам как нематериальный бонус. Каждый сотрудник получает индивидуальный инвайт-код, регистрируется в приложении и видит эксклюзивные предложения.
На старте у клиента уже были работающий сайт и бэкенд на REST API, более десяти крупных партнёров — банков, ритейлеров и IT-корпораций. Совокупная численность сотрудников этих компаний превышала 500 000 человек. Полноценного мобильного приложения не было, и это ограничивало использование бонуса: сотрудники не могли быстро активировать скидки со смартфона, а значит, ценность предложения снижалась.
Задача звучала как «разработайте мобильное приложение», но в процессе мы столкнулись с тремя скрытыми проблемами.
Первая. Бэкенд задерживался. Он должен был быть готов к началу разработки, но фактически его доделывали параллельно. Фронт-команда могла простаивать неделями — а это прямой сдвиг сроков и дополнительные затраты.
Вторая. В середине проекта выяснилось, что заказчику нужно не одно приложение, а три брендированные версии для разных групп партнёров. Каждая со своим логотипом, цветовой схемой, названием и адресом сервера.
Третья. В приложении требовался встроенный чат поддержки. Внешний сервис LifeText не имел SDK для Flutter. Без обратной связи пользователи не могли оперативно решать проблемы, что вело к снижению конверсии.
Мы спроектировали систему, которая решает все три проблемы одновременно, и заложили архитектуру, готовую к изменениям.
Flutter как основа. Мы выбрали Flutter — он позволяет вести единую кодовую базу для iOS и Android. Любая доработка пишется один раз и работает на обеих платформах. Если бы мы выбрали нативные языки, пришлось бы разрабатывать два отдельных приложения — на Swift и Kotlin — с двойными затратами.
Flavors — один код для трёх приложений. Мы сделали так, что из одного кода собирается три разных приложения. При сборке просто меняются настройки: название, иконка, цветовая схема и адрес сервера. Весь процесс автоматизирован. В результате любая доработка вносится один раз, а получают её все три версии.
Мок-данные — работа без бэкенда. Пока бэкенд задерживался, мы подготовили свои тестовые данные — такие же, какие позже должен был отдавать сервер. С ними можно сразу начать разрабатывать интерфейс и логику приложения, не дожидаясь готового бэкенда. Когда бэкенд доделали, мы просто заменили тестовые данные на реальные запросы — это заняло один день.
Чат через WebSocket. Для чата мы использовали внешний сервис LifeText. Обычно такие сервисы дают готовые инструменты для разработчиков — но для Flutter у LifeText такого не было. Поэтому мы подключились к сервису напрямую: настроили канал для обмена сообщениями в реальном времени, передали данные пользователя и настроили приём уведомлений. Всё сделали сами, без готового SDK. В результате чат заработал мгновенно — пользователи получают ответы поддержки без задержек, прямо в приложении.
Это не первая наша задача, где приходится работать без готовых инструментов. В похожем проекте мы восстанавливали BLE-протокол фитнес-браслетов по байтам — там SDK тоже был бесполезен, и мы разобрались с устройством напрямую.
Производительность. Приложение выросло до 50+ экранов — это серьёзный объём для мобильного проекта. Мы настроили приоритеты загрузки, чтобы список купонов не тормозил даже при быстром скролле, а картинки подгружались без задержек, пока пользователь листает.
Главный вызов этого проекта случился не на старте. Мы уже вовсю разрабатывали приложение, когда заказчик сообщил: «Нам нужно не одно приложение, а три — с разными брендами, дизайном и серверами».
Мы оперативно оценили новые требования, предложили заказчику решение и согласовали изменения. Вместо того чтобы переписывать всё с нуля, мы за несколько дней перестроили систему сборки. Умение быстро перестраиваться под новые условия — наш стандартный подход. Например, в проекте по разработке финтех-приложения для Нигерии мы за 3 месяца полностью переписали бизнес-модуль с нуля и запустили MVP, хотя изначально сроки казались нереальными.
Мы настроили Flavors — это позволяет из одного кода собирать несколько приложений с разными названиями, иконками и настройками, а также автоматизировали сборку и публикацию в магазины. В итоге дополнительные затраты оказались минимальными, график почти не сдвинулся, и заказчик получил три готовых версии приложения.
Три брендированных приложения одновременно вышли в Google Play и App Store. По оценке заказчика, их аудитория превысила 100 000 активных пользователей.

Для бизнеса:
Любая новая фича пишется один раз и становится доступна всем трём версиям — экономия на поддержке достигает 70%.
Добавление четвёртой или пятой версии не требует изменения кода — только настройки параметров сборки.
Краш-рейтинг менее 1%, жалоб на производительность не поступало.
Проект занял около шести месяцев, заказчик принял работу без нареканий.
Для пользователей:
Мгновенный доступ к скидкам в два клика.
Чат-поддержка в реальном времени.
Плавная работа без зависаний.
«Когда заказчик в середине проекта сказал, что нужно три приложения вместо одного, команда не запаниковала. Просто перестроили систему сборки за несколько дней и продолжили работать. Заказчик был в шоке, что так бывает. Мы просто сделали свою работу».
Главный вызов этого проекта случился не на старте. Мы уже вовсю разрабатывали приложение, когда заказчик сказал: «Нам нужно не одно приложение, а три». Вместо того чтобы переписывать всё с нуля, мы за несколько дней перестроили систему сборки, и график почти не сдвинулся.
Мы не просто выполняем техническое задание — мы проектируем системы, которые готовы к изменениям. Заказчик просил «сделать приложение», а мы сделали архитектуру, которая экономит бюджет, масштабируется и работает стабильно. Это позволяет бизнесу расти без оглядки на IT-ограничения.
Проект передан в ежемесячную техническую поддержку. Мы сопровождаем продукт, оперативно фиксим баги и помогаем с доработками.
АЙТИФОКС — компания по кастомной разработке ПО. Специализируемся на Flutter, Python, React и AI-решениях. Проектируем архитектуру, которая готова к изменениям — без переписывания кода и срыва сроков.
Сайт: itfox-web.ru