Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
가족 트리·사진·이야기·목소리를 한 곳에 보관하는 개인 아카이브, 무료로 시작하세요
A private family archive: your tree, photos, stories and relatives' voices in one place. Gather your family's story together — start for free.
라이프스타일JavaScript · TypeScriptGitHub @wiselab-group온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.