logo

Сервис для создания генеалогического древа

Разработали онлайн-сервис для составления родословной и создания генеалогического древа.
разработка систем с графовой структурой.png
разработка генеалогического древа.png
ИндустрияНаучные исследования
Тип бизнесаB2C-услуги, B2B-услуги
РегионРоссия
ИндустрияНаучные исследования
Тип бизнесаB2C-услуги, B2B-услуги
РегионРоссия

Клиент

Группа компаний «Единая среда» уже 15+ лет проводит оцифровку объектов городской среды. В 2023 году получила заказ от органов власти на формирование баз данных о местах захоронений. В процессе накопления информации собственник решил, что собранные публичные данные могут приносить пользу людям.

Поэтому в 2024 году у клиента родилась идея создать дочерний проект – построение генеалогического древа и поиск родственников.

В отличие от классических сервисов для составления родословной, задача не ограничивалась визуализацией связей. Проект изначально задумывался как платформа, где пользователи могут не только строить семейные деревья, но и работать с реальными данными: искать людей, находить места захоронений, взаимодействовать с профильными организациями и заказывать услуги.

Вызовы

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

Веб-сервис должен был связать обычных пользователей (заказчиков услуг) с профильными организациями. С точки зрения платформы задача была понятной: личные кабинеты для пользователей и подрядчиков с разными ролями, поиск исполнителей, интеграции с платежными сервисами. Основная сложность была не в этом.

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

Ограничения по срокам и бюджетам

Проект изначально разрабатывался в жестких ограничениях по срокам и бюджету.

Это напрямую влияло на архитектурные решения: нужно было закладывать масштабируемость и гибкость, но при этом не перегружать систему избыточной сложностью на старте.

разработка генеалогического древа.png

Сложный интерактивный интерфейс

В основе древа – система узлов и связей между ними. При этом нужно было учитывать не только формальные родственные связи, но и реальные жизненные сценарии: неполные данные, разрозненные ветви, отсутствие части информации.

Важно было не просто отобразить структуру, а сделать ее читаемой: чтобы пользователь мог ориентироваться в древе, добавлять новые связи и не теряться при росте количества людей.

Также система должна была поддерживать поиск родственников – как при наличии полной информации, так и при минимальных исходных данных.

Какие задачи мы решали при разработке функционала древа:

Задача #1. Визуализация поколений

Для моделирования связей использовали графовую структуру: вершины – это люди, а связи между ними задаются ребрами.

Однако просто описать связи оказалось недостаточно. При попытке отобразить древо на плоскости структура начинала плыть: связи пересекались, поколения смещались, логика терялась.

Чтобы этого избежать, мы реализовали собственную логику компоновки и размещения узлов, которая сохраняет иерархию поколений и структуру связей при добавлении новых элементов.

Задача #2. Работа со сложными сценариями

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

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

Задача #3. Кастомный UI/UX

В качестве базового инструмента мы рассматривали React Flow, однако библиотека не покрывала ключевые требования к функционалу древа.

В результате значительную часть логики и компонентов пришлось реализовывать самостоятельно: от поведения узлов и связей до пользовательских сценариев взаимодействия. По сути, библиотека использовалась нами как отправная точка, а не как готовое решение.

Задача #4. Поиск и масштабирование

Система изначально проектировалась с расчетом на дальнейшее развитие: подключение внешних источников данных, рост количества пользователей и усложнение структуры деревьев.

Архитектура закладывалась с запасом на расширение – без необходимости менять базовые процессы при росте нагрузки и появлении новых сценариев использования.

Задача #5. Поиск совпадений между пользователями

Дополнительно реализовали механизм поиска совпадений между деревьями разных пользователей. Система анализирует открытые данные (ФИО, даты и другие доступные параметры) и предлагает возможные совпадения, если человек отсутствует в текущем древе пользователя.

Это упрощает расширение древа и помогает находить потенциальные связи между семьями.

Итог. Функционал древа

– Поиск родственников по различным параметрам, включая частичные данные.
– Вычисление степени родства.
– Неограниченное количество персон в одном древе.
– Приглашение родственников к совместной работе над древом.
– Связывание семейных древ разных пользователей целыми ветвями.
– Загрузка и хранение документов (фото, видео, сканы) с привязкой к человеку, семье или событию.
– Создание цифровых фотоальбомов с возможностью комментирования.
– Поиск захоронений с отображением данных, включая фото и координаты.
– Гибкие настройки конфиденциальности для управления доступом к информации.

Технологии

technology
Бэкенд

Golang

technology
Фронтенд

React

technology
База данных

ClickHouse

technology
База данных

PostgreSQL

technology
Библиотека

React Flow

technology
Брокер сообщений

NATS

Результат

Проект был реализован всего за 10 месяцев. Первые четыре месяца заняли проработка пользовательских сценариев, создание прототипов и подготовка детального технического задания. Это позволило заранее проработать сложную логику системы и избежать критичных изменений на этапе разработки. На саму разработку ушло еще шесть месяцев – с учетом сложности проекта и объема кастомной логики это сжатый срок.

В результате был запущен полноценный веб-сервис с возможностью поиска, двумя типами личных кабинетов (для пользователей и администраторов), а также ключевым элементом платформы – функционалом генеалогического древа.

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

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

10 месяцев –

столько заняла разработка: от первых макетов до релиза готового сервиса.

grade
2 типа

ролей: частные пользователи и профильные организации.

grade

Напишите нам

/ 5000

Что происходит дальше:

  • Мы получаем запрос, обрабатываем его в течение 24 часов и связываемся по указанным вами e‑mail или телефону для уточнения деталей.

  • Подключаем аналитиков и разработчиков. Совместно они составляют проектное предложение с указанием объемов работ, сроков, стоимости и размера команды.

  • Договариваемся с вами о следующей встрече, чтобы согласовать предложение.

  • Когда все детали улажены, мы подписываем договор и сразу же приступаем к работе.