尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A home for your family story.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Семейный архив: родословная как граф людей и связей, интерактивное семейное дерево, профили людей, события, медиа (фото/видео/аудио/документы) и семейные истории. Спроектировано как основа для будущего SaaS (семейные аккаунты, роли, подписка) — см. docs/architecture.md для полной архитектуры и обоснований, и PRODUCT.md для scope/roadmap.查看完整 README ↗
Семейный архив: родословная как граф людей и связей, интерактивное семейное дерево, профили людей, события, медиа (фото/видео/аудио/документы) и семейные истории. Спроектировано как основа для будущего SaaS (семейные аккаунты, роли, подписка) — см. docs/architecture.md для полной архитектуры и обоснований, и PRODUCT.md для scope/roadmap.
[email protected], database sessions)pnpm install
cp .env.example .env.local
# заполните .env.local: DATABASE_URL (обязательно), AUTH_SECRET, BLOB_READ_WRITE_TOKEN
AUTH_SECRET сгенерировать командой:
pnpm dlx auth secret
pnpm db:generate # генерирует SQL-миграцию из src/db/schema/*.ts
pnpm db:migrate # применяет миграции к DATABASE_URL
pnpm db:studio # drizzle-kit studio — визуальный браузер БД
После первого pnpm db:migrate также нужно вручную включить pg_trgm
extension и создать fuzzy-search индекс на persons — см.
docs/architecture.md § Search (добавляется как
raw SQL миграция, т.к. Drizzle не имеет декларативного API для trigram-индексов).
pnpm dev
Первые версии деплоятся на дефолтном Vercel-домене (*.vercel.app).
Кастомный домен root.house подключается позже как DNS-шаг — конфигурация
(env-переменные, Auth.js AUTH_URL) не хардкодит домен, см. .env.example.
pnpm typecheck
pnpm lint
pnpm test
pnpm build # требует настоящий DATABASE_URL — Next.js исполняет код страниц
# при сборе данных даже для динамических маршрутов
Все четыре команды должны проходить чисто (zero warnings) — см. правило в CLAUDE.md.
pnpm test (Vitest, 71 тестов). Приоритет — доменная логика и безопасность,
не coverage:
src/domain/family/access.test.ts — авторизация (requireFamilyAccess, роли owner/editor/viewer)src/domain/shared/partial-date.test.ts — форматирование/сравнение неполных дат, парсинг form-данныхsrc/domain/relationship/relationship.service.test.ts — валидация связей (self-reference, циклы)src/domain/relationship/sibling-derivation.test.ts — вычисление sibling-связей (полнородные/неполнородные)src/domain/relationship/relationship-path.test.ts — вычисление родства между двумя людьмиsrc/domain/tree/tree-layout.builder.ts — построение layout семейного дереваsrc/domain/media/storage.service.test.ts — контракт StorageService (upload/delete/getSignedUrl)src/domain/search/query-classifier.test.ts — классификация поискового запроса (имя vs год)Каждый функциональный этап дополнительно проверялся вживую на реальной БД (Neon) и реальном Vercel Blob через сценарии end-to-end (регистрация → семья → люди → связи → дерево → медиа → поиск), не только unit-тестами — см. историю коммитов для деталей каждой проверки.
src/
app/ Next.js App Router — маршруты, layouts
actions/ Server Actions — тонкая обёртка: auth() → requireFamilyAccess() → domain
domain/ Бизнес-логика, БЕЗ импортов next/react — юнит-тестируется изолированно
db/ Drizzle-схема, клиент, миграции
components/ UI-компоненты (ui/ — shadcn/ui примитивы, остальное — доменные)
lib/ auth.ts, validation/ (zod-схемы)
types/ доменные типы, декларации модулей
Ключевой архитектурный принцип: родословная — граф Person+Relationship в БД,
а не дерево. Family tree/генограмма/timeline — разные UI-представления одних
и тех же данных; доменная модель не зависит от графической библиотеки
(@xyflow/react подключается только через components/tree/adapters/).
Подробности — docs/architecture.md.