Genealogy Tree — генеалогическая платформа (full-stack)

С марта 2026 веду разработку веб-платформы для структурирования родословных данных: от проектирования предметной области и контрактов API до интерактивного клиента на графе. Здесь много «настоящей» доменной сложности: нечёткие даты, типизированные связи, трассировка к источникам и аудит.

Контекст и постановка

Массовые сервисы родословной часто сводят задачу к визуализации «дерева» и упрощают реальность исследования: разная гранулярность дат, несколько типов происхождения, противоречащие источники и необходимость явной связи «утверждение — доказательная база». Постановка проекта — закрыть эти требования формальной моделью данных и стабильным API, а не только экраном со схемой.

Зона ответственности

Полный цикл на уровне продукта и инженерии: монорепозиторий (pnpm workspaces), схема PostgreSQL и миграции через Prisma, модульный REST API на NestJS, клиентское приложение на Next.js с интерактивным графом на React Flow, локальная инфраструктура в Docker Compose (СУБД, S3-совместимое хранилище). Архитектура домена, реализация бэкенда и фронтенда, каркас поставки и эксплуатации.

Предметная модель

Изолированные деревья с ролевым доступом (владелец, редактор, наблюдатель); персоны с вариантами имён и диапазонами дат с точностью; родственные связи как отдельные сущности с типом (биологическая, усыновление, опека и др.) и уровнем достоверности; союзы (брак, партнёрство) с участниками и дочерними связями; события, места, источники, цитаты, медиа и заметки; журнал изменений для аудита и совместной работы. Такой дизайн отражает практику генеалогического исследования и переносим на другие предметные области с неполными и спорными фактами.

Технологии

stack

Web

Next.js (App Router), React, TypeScript.

Graph UI

React Flow: интерактивный граф, навигация и редактирование.

API

NestJS, Prisma ORM.

Database

PostgreSQL: схема, миграции и типобезопасные запросы.

Storage

MinIO (S3 API): медиа и документы, привязка к сущностям.

Infra

Docker Compose, pnpm workspaces.

Архитектура проекта

Классическое разделение клиент — API — персистентность; типобезопасный контракт между слоями за счёт TypeScript и Prisma Client; объекты вынесены в совместимое с S3 хранилище.

  1. 1

    Клиент

    Next.js (App Router), React, TypeScript

  2. 2

    Сервер

    NestJS, Prisma ORM, PostgreSQL

  3. 3

    Объекты

    MinIO (S3 API), привязка к сущностям домена

  4. 4

    Инфраструктура

    Docker Compose, изолированные порты для локальной разработки

Интерфейс

Рабочее место ориентировано на навигацию по графу: узлы персон и союзов, выделение и фильтрация, сохранение координат на холсте; детальные панели для редактирования без перегрузки схемы. Заложена основа для развития UX (доступность, мобильные сценарии, производительность на больших графах).

Статус и roadmap

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