Skip to content

Kinori is a privacy-first web application for building family genealogical trees, storing archives (photos/documents), and collaborating through moderation and edit suggestions

License

Notifications You must be signed in to change notification settings

Khimish009/kinori-frontend

Repository files navigation

Kinori

License

Kinori — privacy-first веб-приложение для построения и управления генеалогическими деревьями, хранения семейного архива (фото/документы) и совместной работы через ограниченный просмотр по ссылке, запрос доступа, модерацию и предложения правок (suggestions).


✨ Ключевые возможности (MVP)

  • Мульти-пользовательский сервис: каждый пользователь может создавать несколько деревьев.
  • Приватность по умолчанию: деревья приватные.
  • Share-ссылка с LIMITED VIEW:
    • видны только умершие;
    • без медиа;
    • без точных дат (допускаются только годы);
    • UI показывает, что есть дополнительные данные после доступа.
  • Запрос доступа (AccessRequest):
    • пользователь логинится и отправляет запрос;
    • владелец/модератор подтверждает → открывается FULL VIEW.
  • Роли: Owner / Moderator / Viewer.
  • Suggestions (предложения правок):
    • Viewer может предлагать изменения;
    • Moderator принимает/отклоняет (аналог pull request).
  • Медиаархив:
    • загрузка изображений и PDF (в будущем аудио/видео);
    • привязка файлов к персонам.
  • Уведомления: in-app + email + Telegram (если подключён).

🧭 Roadmap

Этап 0 (контракты и моки)

  • OpenAPI + DTO
  • Mock API (MSW)
  • Webpack сборка + i18n/RTL каркас
  • UI дерева на мок-данных

MVP

  • Auth (JWT access+refresh, reset password)
  • Trees / Persons / Relationships + Subtree API
  • ShareLink limited view + AccessRequest approve/reject
  • Suggestions + модерация
  • Media (pre-signed upload, link to person)
  • Notifications: in-app + email + Telegram

v1

  • GEDCOM import (приоритет) + export
  • Расширение модели фактов/источников
  • Превью/миниатюры и фоновые задачи
  • (опционально) роль Editor

🏛 Архитектурные принципы

  • Variant A: tree-scoped persons — персона живёт только внутри конкретного дерева (Person принадлежит Tree).
  • Front-first — UI строится на моках и контракте; backend подключается по стабильному API.
  • Privacy-by-default — живые люди скрываются в limited view; есть правило “живой/умерший” с порогом X.
  • Subtree loading — визуализация дерева подгружает части графа по запросу (depthUp/depthDown), не “всё дерево сразу”.

🔐 Видимость данных

LIMITED VIEW (по ссылке)

  • показываем: только умерших, имена, пол, годы (если известны), связи между умершими
  • скрываем: живых полностью, медиа, точные даты, расширенные данные

FULL VIEW (для участников дерева)

  • показываем все данные, включая медиа и полные даты (с учётом точности)

🧰 Технологии (план)

Frontend

  • React + TypeScript
  • Webpack (кастомная сборка) (HMR/Fast Refresh, code splitting, assets)
  • i18n + RTL (арабский) с самого начала
  • MSW для моков
  • Tree UI: react-flow (MVP)

Backend

  • Node.js + NestJS
  • PostgreSQL + Prisma
  • Redis (опционально, полезно для rate limit / очередей уведомлений)

Storage

  • S3-compatible (AWS S3 / Cloudflare R2 / MinIO для dev)
  • Upload через pre-signed URL

Deploy

  • VPS + Docker Compose + Nginx

About

Kinori is a privacy-first web application for building family genealogical trees, storing archives (photos/documents), and collaborating through moderation and edit suggestions

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors