logo

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

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

Клиент

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

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

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

Столкнулись с похожей бизнес-задачей?Давайте ее обсудим
Столкнулись с похожей бизнес-задачей?Давайте ее обсудим

Вызовы

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

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

Однако с построением древа мы столкнулись впервые. Новое и необычное – вот что привлекло больше всего, и мы с энтузиазмом взялись за работу.
happy-family-park.jpg

Время – деньги

Самый частый вызов в нашей работе – бюджет и сроки, и этот кейс не стал исключением.

Главная.png

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

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

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

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

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

У каждого человека есть биологические отец и мать – это парная связь (на первом этапе не брали исключения вроде усыновления или ЭКО). Его биологические родители, в свою очередь, тоже имеют каждый свою парную связь.

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

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

Задача #2. Создание сложных структур

Следующая ступень – сделать так, чтобы горизонтальные ребра не пересекались и не меняли уровень в сложных случаях: кровнородственные браки, усыновление, полигиния или полиандрия, ЭКО без участия одного из родителей. То есть когда одна из связей графа утеряна и восстановить ее нельзя.

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

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

Применение библиотек ускоряет разработку, но вносит ограничения в кастомизацию, что сильно сказывается на UI/UX. Проект древа сложный и предполагал индивидуальный дизайн. Мы использовали React Flow, однако бо́льшую часть компонентов все равно пришлось делать самостоятельно.

Задача #4. Вертикальный поиск и масштабирование

Чтобы искать дальних родственников, нужно «научить» древо строить вертикальные связи. Для этого понадобятся данные из архивных служб, ДНК-лабораторий и подобных компаний.

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

Задача #5. Рекомендательная система

Внедрили систему рекомендаций как еще один способ поиска родственников. Пользователь выбирает в своем древе карточку и нажимает опцию «Рекомендовать».

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

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

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

Технологии

technology
Бэкенд

Golang

technology
Фронтенд

React

technology
База данных

ClickHouse

technology
База данных

PostgreSQL

technology
Библиотека

React Flow

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

NATS

Результат

В первые четыре месяца работы мы рисовали прототипы, утверждали user scenario и писали подробное техзадание. На саму разработку ушло еще шесть месяцев – действительно быстро для столь крупного проекта.

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

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

10 месяцев –

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

grade

Напишите нам

/ 5000

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

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

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

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

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