← всі звіти · index.md

type: project name: Родинне дерево (Family Tree) slug: family-tree status: mvp readiness_pct: 50 owner_agent: TODO products: [] created: 2026-04-14 last_updated: 2026-05-02

Родинне дерево (Family Tree)

Особистий проект Сергія — оцифрувати родовід, який багато років копає його батько (60+) по метричних книгах. Кінцева аудиторія — родичі (європейська гілка роду).

Кодова назва (історично) у репозиторіях: lunar-hubble. У бесідах і документах — «Родинне дерево» або «Family Tree» (Сергій 2026-05-02: «зватимемо просто, щоб простіше було вказувати шлях»).

Meta

Чому це робимо (voice Сергія 2026-05-02)

2 адміни з різними потребами

  1. Сергій — займається архітектурою + візуалізацією + бекенд-сервісами
  2. Батько (60+) — потребує:
    • Максимально проста, інтуїтивна адмінка (редагування фактів, фото)
    • Telegram-бот з voice-капабіліті (диктувати спогади голосом, друкувати — блокер)
    • Тегування людей у спогаді (один спогад / фото може стосуватись кількох родичів)

KPIs

Цільова архітектура (з voice)

  1. Web-client — публічна частина для родичів (читання, 2D/3D-візуалізація)
  2. Web-admin — клієнт + редагування об'єктів (для Сергія)
  3. Telegram-бот для адміна — батько диктує voice → транскрипція → entity-tagging → approve → запис до конкретного персонажа
  4. БД 2-частинна:
    • Текстові дані + зв'язки (хто чий батько/мати, біографії, факти, теги)
    • Фото + посилання на метричні книги — на власному Google Drive Сергія

Поточна проблема (motivation для v2)

Design

v2 — пропозиція (повний звіт 2026-05-02)

Повний архітектурний аудит і план: lunar-hubble-v2-architecture-2026-05-02.md (~58KB, 21 знайдена проблема)

Стек v2:

Прибрати з deps:

3 спринти × 1 тиждень:

  1. Foundation (новий репо + CI/CD + імпорт даних + базовий tree-view)
  2. Telegram-bot (voice → whisper → Gemini → entity tagging → review flow → DB + Google Drive)
  3. Web Admin (CRUD UI persons/relationships/memories + спрощений «батько-mode»)

Інфраструктура (станом на 2026-05-02 пізнього вечора)

Зберігання даних

Що Де Власник
БД (persons / relationships / memories / sources / photos metadata) SQLite на VPS: /srv/projects/family-tree-mvp/data/family.db Сергій
Фото (файли) Локально на VPS: /srv/projects/family-tree-mvp/data/photos/ Сергій
Метричні книги (jpg/pdf) Локально на VPS: /srv/projects/family-tree-mvp/data/sources/ Сергій
Стара prod-БД (Supabase) https://kgjhghdopikkjdotacof.supabase.co Сергій (заморожена, не пишемо)

Бекап-стратегія

Тип Розклад Куди Стан
Локальний (SQLite + media) щодня 04:00 UTC через family-tree-backup.timer /srv/projects/family-tree-mvp/data/backups/{daily,weekly}/ ✅ live (2026-05-02)
Off-site (Google Drive Сергія) щотижня (нд) Google Drive Сергія, папка «Family Tree Backups» 🔄 чекає Drive credentials (SA з шарованою папкою або OAuth з беклогу)

Скрипт: /srv/projects/family-tree-mvp/scripts/backup_local.sh

Як додати Drive upload (наступний крок):

Сервіс

Резервна стратегія дисастера

  1. VPS падає → останній бекап (24 год) у data/backups/daily/
  2. SSD VPS втрачено → останній weekly (тиждень) на Google Drive Сергія (після setup)
  3. Google Drive теж пропадає → старий prod Supabase-snapshot (заморожений) — як крайній fallback

Implementation

Поточний стан (v1, 2026-05-02)

Critical issues v1

Auth & deep-links — voice Сергія 2026-05-02

Поточний стан (v1, тимчасово)

v2 — два окремі лінки

  1. Публічний лінк для всіх родичів — БЕЗ логіну, легко поширювати (наприклад через сімейні чати, QR-коди тощо)
  2. Адмін-лінк — логін + пароль (тільки для Сергія і батька)

🆕 Глибокі посилання (deep links) — ключова фіча

Це сильний engagement-механізм для родичів на похованнях / поминальних зборах. QR можна друкувати на гранітних табличках або таблицях у каплиці.

10 open questions (для Сергія, з звіту v2)

  1. Чи ротовано секрети з 18.04 (GitHub PAT, Gemini API key, Telegram bot token, Google SA key)?
  2. Auth для адмінів — voice 02.05: окремий публічний лінк (без auth) + окремий адмін-лінк (логін+пароль). Telegram Login обговорити окремо для батька (зручно, бо вже звик).
  3. Чи треба staging-таблиця для модерації спогадів батька (твій approval перед публікацією)?
  4. Чи переходимо на Next.js 15 (recommend) — чи Vite залишається?
  5. Один граф-бібліотека замість трьох — погоджуємось?
  6. Де хостимо: VPS systemd чи Vercel + Cloud Run hybrid?
  7. Auth для адмінів: magic link / Telegram Login / Google OAuth?
  8. Чи зберігаємо f3data_dump.json як legacy export, чи відкидаємо?
  9. Чи додаємо spouse-relationship поля (start_date, end_date) для шлюбів-розлучень?
  10. Чи готовий ти потрапити з v2 на 1-week-sprint cycle (тобто щотижнева цільова поставка фічі)?

Notes & Backlog

TODO (post-OK)

TODO міграція

Зв'язки