尚未偵測到更新。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.