ВСЕ ПРОЕКТЫ

Real Estate Platform

Платформа недвижимости под NDA: каталог, мобильное приложение и CRM на одной модели данных, синхронизированной с системой клиента.

Тема
  • Mobile / Telegram
  • SaaS / CRM
  • B2B-технологии
Роль
Разработка / Продуктовый дизайн / Стратегия
Дисциплины
  • Frontend
  • Backend
  • UX/UI-дизайн
  • Стратегия

Four products, one data model

В компании из сферы недвижимости данные никогда не живут в одном месте. Объекты, собственники, застройщики, клиенты, заявки и сделки заводят разные отделы, и меняются они с разной скоростью, а каталог при этом должен быть актуальным, маркетингу нужен контент, брокерам — воронка, руководителям — цифры.

Мы собрали для всего этого одну платформу: публичный сайт, мобильное приложение, внутреннюю CRM и слой интеграции с существующей системой компании. Клиент, продукт и регион не раскрываются по NDA, поэтому вместо скриншотов продукта здесь иллюстрация каталога и схема архитектуры.

A catalogue people can search and come back to

Публичный сайт рендерится на сервере — ради поисковиков и быстрого первого экрана. Каждый фильтр сохраняется в URL, поэтому поиск можно сохранить, отправить или открыть снова, а осмысленные сочетания фильтров получают свои посадочные страницы. В карточке объекта — медиа, карта, ответственный брокер и похожие предложения; на сайте есть жилые комплексы, застройщики, статьи и вакансии, на нескольких языках.

Сохранённый поиск превращается в подписку: когда появляется подходящий объект, пользователь получает пуш, письмо или SMS.

A mobile app from the same code

Приложение для iOS и Android собрано на Nuxt и Capacitor на тех же GraphQL-контрактах, что и сайт, поэтому два канала никогда не расходятся, а команде не нужно поддерживать второй клиент с нуля.

При этом оно ведёт себя как нативное: подтверждение телефона и вход через соцсети, токены в защищённом хранилище устройства, сессии, которые восстанавливаются сами, системное меню «Поделиться», deep links и пуш-уведомления. Небольшой отдельный сервис отправляет каждую расшаренную ссылку туда, куда нужно: на экран внутри приложения, в стор, если оно не установлено, или на веб-страницу.

A CRM shaped around real estate

Брокеры, менеджеры, бэк-офис, редакторы контента и руководство видят те разделы и действия, которые разрешает их роль. Объекты связаны с собственниками, комплексами, застройщиками и агентами, у них есть медиа, координаты на карте, массовый импорт и согласование изменений, которым нужен второй взгляд.

Вокруг них — клиенты, лиды, заявки и сделки с объединением дублей и полной историей изменений, задачи и календарь, счета и касса, где балансы в евро и USDT ведутся рядом, XML-выгрузки на площадки объявлений и дашборды с KPI для каждой роли.

Moving off the old system without stopping it

Самой сложной частью была существующая система компании: на ней держался весь бизнес, поэтому выключить её и переехать за одну ночь было нельзя. Мы сделали отдельный сервис синхронизации, который принимает её вебхуки и читает изменения в её базе через Debezium CDC.

Сервис синхронизации никогда не пишет в чужие базы. Он публикует нормализованные события, а каждый доменный сервис применяет их в своих границах — так старая и новая системы работали бок о бок, пока процессы переезжали по одному.

Heavy work off the request

Всё, чего пользователю не нужно ждать, идёт через RabbitMQ: импорт и обработка медиа, синхронизация, проверка подписок и уведомления. Уведомления разделены на бизнес-слой, который решает, кому и что отправить, и транспортный, который только доставляет письма, SMS и пуши, — поэтому провайдера можно сменить, не трогая правила.

Все клиенты ходят в один API Gateway, который через Apollo Federation собирает доменные сервисы в единый GraphQL API. Инфраструктура описана в Terraform и работает в Kubernetes, у каждого сервиса свой Helm-чарт.

Stack

Vue · Nuxt · TypeScript · Capacitor · NestJS · GraphQL · Apollo Federation · PostgreSQL · Redis · RabbitMQ · Debezium · Kubernetes · Terraform · AWS

СЛЕДУЮЩИЙ ПРОЕКТInteractive LabПостоянно пополняемый архив WebGL-этюдов, стриминговых интерфейсов и экспериментов со взаимодействием в браузере.ОТКРЫТЬ ПРОЕКТ

Следующий проект — ваш.

Для начала хватит сырой идеи, недописанного брифа или задачи, которую пока трудно сформулировать. Расскажите, над чем работаете, — мы ответим вопросами, а не прайсом.