Вместе.ру
2 000 000
Недвижимость
Россия, Москва
IOS, Android
Сентябрь 2023
Проект изначально подразумевал использование мобильного приложения в качестве основной платформы. Разработка бэкенда ориентировалась на мобильное приложение с возможностью в будущем подключить веб-интерфейс.
На первых этапах стояла задача получить максимально функциональное приложение в минимальные сроки. Заказчик оформлял требования к бизнес-инструменту, на их основании формировался дизайн-документ, после его согласования разработчики писали код. Важно было реализовать функциональность, необходимую управляющим компаниям: удобные инструменты для оплат, управления умным домом, общения с администрацией. Оформлены они были строго и лаконично, интерфейс должен был быть практичным и понятным, задачи увеличить проводимое в приложении время не стояло.
После возвращения к концепции социальной сети вектор развития сменился, начался полномасштабный ребрендинг всего проекта, и требования к UX мобильного приложения сместились с функциональности в сторону комфорта пользователя. Приложение должно было стать компаньоном, а не просто инструментом для взаимодействия с УК. В первую очередь эти изменения коснулись дизайна и возможностей для общения пользователей.
Проект «Вместе.ру» начинался как стартап, призванный объединить собственников недвижимости и просто жителей по географическому принципу — месту жительства, расположению собственности. Соседи по подъезду, дому, улице, району и городу получали возможность общаться друг с другом, помогать, находить общие интересы.
Также приложение должно было выполнять функцию площадки для проведения общего собрания собственников в режиме онлайн (соответствующий закон принят в 2020 году).
В дальнейшем, в связи с объединением с группой компаний «Самолёт», обслуживающей жилые комплексы, концепция изменилась: теперь портал и приложение в первую очередь обеспечивали потребности клиентов конкретных управляющих компаний — оплату коммунальных услуг, общение с диспетчерскими службами, управление шлагбаумами и т. д. Также на старте велись переговоры с региональными УК: они были заинтересованы в приложении, позволяющем оцифровать взаимоотношения с жителями.
В 2022 году проект «Вместе.ру» вернулся к первоначальной концепции: социальная сеть для соседей, включающая в себя функциональность как для жителей — чаты, новости, сообщества, доски объявлений, так и для бизнеса — возможность поиска клиентов по территориальному признаку.
В 2022 году появилась задача полного редизайна продукта. Сложность заключалась в сохранении существующей функциональности при проведении рефакторинга компонентов и обновлении их визуального стиля. Благодаря совместным усилиям команд разработки и дизайна была создана компонентная база, которая значительно упростила процесс разработки интерфейса, приблизив его к уровню конструктора. Кроме того, команда достигла общего понимания принципов дизайн-системы и её технических аспектов, что способствовало более эффективной работе и взаимодействию между дизайнерами и разработчиками.
Проектная и дизайнерская команды использовали Figma для разработки интерфейса и прототипирования, Discord — для коммуникации между командами и Microsoft Azure — для управления задачами и исправлением ошибок. В репозитории Azure хранятся ассеты для интерфейса и дизайн-системы, такие как иконки, токены, шрифты и документация к сценариям. Это упрощает контроль над версиями файлов дизайна: например, при обновлении иконок создаётся пул-реквест, и новые изображения автоматически попадают в ветку разработки. Коммуникация об изменениях в репозиториях осуществляется через discord-каналы.
Результатом редизайна было полностью визуально обновлённое приложение с новыми анимациями и упрощённой логикой для некоторых сценариев.
Универсальный бэкенд
Изначально предполагалось, что бэкенд, написанный под мобильное приложение, будет в дальнейшем использоваться и в веб-версии портала. Но возникали ситуации, когда методы API, предназначенные для мобильных устройств, не очень хорошо сочетались с логикой работы веба. В частности, отличия в размерах экранов потребовали разных интерфейсов и наборов данных для отображения пользовательской информации, для таких случаев писались отдельные запросы для мобильной и веб-версий. Также различаются способы авторизации пользователя (сессии для мобильного приложения, куки для веба). Однако около 90% кода бэкенда универсальны и используются всеми платформами.
Технологии с открытым исходным кодом
До февраля 2022 года в основе платформы лежали базы данных и серверные приложения, развёрнутые преимущественно на Windows-серверах, затем был произведён переход на NIX-системы. Это позволило развернуть приложение на Linux-серверах без зависимости от платного ПО, сейчас используются только технологии с открытым исходным кодом, в частности .NET 5 и выше. Этот фреймворк выложен на GitHub и предполагает разработку всего прикладного уровня приложений на серверах Linux. Базы переносятся с Microsoft SQL на PostgreSQL.
Переиспользуемая кодовая база
Основной платформой для разработки кросс-платформенного мобильного приложения стал фреймворк Xamarin Native.
Он позволил создать архитектуру с максимальным переиспользованием кодовой базы проектов для Android и iOS.
С помощью библиотеки MvvmCross был реализован паттерн MVVM, обеспечивающий чёткое разделение между бизнес-логикой и пользовательским интерфейсом, упрощающий сопровождение и тестирование кода и предоставляющий инструменты для инверсии контроля и внедрения зависимостей. На базе этого паттерна построены навигация и связи моделей с их представлениями.
Собственные уникальные разработки
Все решения писались самостоятельно, с использованием только библиотек с открытым исходным кодом.
- Основные функциональные возможности приложения доступны без подключения к интернету, что обеспечивает его бесперебойную работу в условиях плохой или отсутствующей связи.
- Реализованы технологии фоновых пуш-уведомлений и кеширования.
- Для работы с видео используется решение с открытым кодом от VLC и библиотека SIP Sorcery, обеспечивающая связь домофонии по протоколу SIP.
- Для взаимодействия и передачи событий из UI на уровень общей логики применяются принципы реактивного программирования и библиотека Reactive Extensions.
- Для упрощения работы программистов и снятия рутины часть задач была автоматизирована с помощью генерации кода.
- Для оптимизации тестирования был разработан ряд инструментов, позволяющих тестировщикам лучше понимать текущее состояние приложения, снимать логи с устройств, просматривать их напрямую в приложении и получать доступ к множеству другой технической информации — истории запросов, сессий и т. д. Эти инструменты встраиваются в тестовые сборки и упрощают коммуникации между разработкой и QA-инженерами.
- Из-за предполагаемого ухода из РФ западных магазинов приложений была создана веб-мобайл-версия для полнофункциональной работы платформы из мобильных браузеров.
Во время работы над проектом команда сталкивалась с некоторыми проблемами и интересными задачами.
Доставка сообщений в чатах
Со смещением концепции приложения в сторону социальной сети пользователи стали более мобильными: они хотят продолжать общение в любых условиях, в том числе и в местах с плохим покрытием сотовой сети. Если раньше для обеспечения взаимодействия в реальном времени использовалась технология SignalR, то в новых условиях команда столкнулась с тем, что она не может обеспечить качественную связь при нестабильном сигнале. Проанализировав архитектуру популярных мобильных мессенджеров, мы заменили SignalR на самописную реализацию принципа длинных опросов (long polling). Это позволило улучшить пользовательский опыт в чатах: длинные опросы обеспечивают доставку сообщения в тот момент, когда условия связи позволяют это сделать, без необходимости перегружать страницу или наблюдать сообщение об ошибке. Кроме того, технология экономит ресурсы сервера и мобильного устройства, поскольку сокращает количество запросов по сравнению с обычным поллингом, используемым, в частности, WebSockets. Чтобы провести миграцию в кратчайшие сроки, функциональность SignalR была полностью повторена, изменения коснулись только транспортного уровня. Также была реализована фоновая обработка пуш-сообщений и кеширование: загруженные в фоне сообщения показываются пользователю даже при отсутствии связи.
Отдельный бэкенд для чат-бота
В приложении используются многоуровневые чаты, представлено несколько типов: контекстно-зависимые, p2p личные переписки, обсуждения и сервисные. Архитектура не предполагает отдельного типа контента «комментарии», все обсуждения реализуются через механизм чатов. Особенностью сервисных чатов (чат-ботов) является необходимость поддержки множества p2p переписок, равного количеству пользователей системы. Также боты должны работать как в автоматическом (рассылки), так и в ручном (ответы на вопросы) режимах. Из-за множества чатов (более 100 тысяч) для чат-бота был написан отдельный бэкенд, поддерживающий методы для высоких нагрузок.
Оптимизация контентных лент
В приложении присутствует множество разнообразных лент сообщений с различными элементами визуализации. Базовые возможности операционных систем не позволяют плавно и быстро оперировать таким большим количеством информации, поэтому был внедрён композитный подход к её отображению. Большие единицы информации программно разбиваются на множество маленьких ячеек, эти ячейки ротируются и переисть скроллинга ленты и исключает задержки.
Кастомное решение для версионирования
Из-за сложной функциональности приложения пришлось разработать собственное версионирование, работающее на уровне методов, а не сборок. В ближайшем будущем будет реализована атрибуция версий.
Всего в мобильном приложении более 20 переиспользуемых проектов, написано более 450 тысяч строк уникального кода с применением кросс-платформенных решений, создано около двух тысяч дизайн-файлов.
Команда из 40 разработчиков выпустила более 600 сборок приложения, написано более 50 микросервисов и 150 различных утилит.
Бэклог проекта расписан на два года. В течение этого времени планируется выпустить доску частных объявлений, личный кабинет управляющей компании, встроить дополнительные финансовые инструменты и далее развивать продукты для жителей и локального бизнеса — в первую очередь соседские сообщества, локальный e-commerce и работу с локальным UGC-контентом.
DD Planet с удовольствием обсудит вашу задачу