Перейти к содержимому

Локальная разработка

Требуются Node.js 24.20.0, pnpm 12.3.4, Docker Desktop и WSL 2 на Windows. Точные версии зависимостей закреплены в манифестах и pnpm-lock.yaml.

Из корня репозитория:

Окно терминала
pnpm install --frozen-lockfile
pnpm db:start
pnpm db:reset
node scripts/setup-local.mjs
pnpm db:test
pnpm exec tsx apps/web/scripts/bootstrap-local.ts
docker compose up --build --wait web
docker compose watch web

Приложение: http://127.0.0.1:3000. Supabase Studio: http://127.0.0.1:54323. Локальная почта: http://127.0.0.1:54324. Тестовые пользователи: parent@foliovera.test, student@foliovera.test, outsider@foliovera.test. Последний пользователь не состоит в семье и получает отказ в доступе.

db:reset пересоздаёт локальные тома PostgreSQL, Auth и Storage, применяет миграции и seed, затем обновляет локальные ключи в .env.local. Все тестовые пользователи и файлы удаляются; bootstrap выполняется заново после SQL-проверок. Скрипты настройки проверяют локальные адреса перед созданием пользователей. Файлы .env.local содержат только локальные ключи и исключены из Git.

Окно терминала
pnpm typecheck
pnpm lint
pnpm test:unit
pnpm build
pnpm exec playwright install chromium
pnpm test:up
pnpm test:e2e

SQL-тесты работают в транзакции с откатом; запускайте их сразу после db:reset, до создания пользователей и браузерных тестовых записей. Сквозные проверки используют production-сборку приложения в Docker, настоящие локальные Auth, PostgreSQL, Storage и почту Mailpit. Проверка magic link читает действительно доставленное письмо и проверяет отказ при повторном использовании ссылки.

Отдельный этап Dockerfile собирает Next.js до запуска контейнера. test:up проверяет локальные адреса и передаёт сборке только публичный локальный ключ. Контейнер запускает готовый standalone server. Для возврата к разработке: docker compose up --build --wait web. Команды db:* всегда выбирают локальный Docker, независимо от production-пароля в исходном .env.

Команды запуска и остановки Supabase выполняются Linux CLI внутри образа tooling. Он использует Unix-сокет Docker и закреплённый Docker CLI 29.7.2; открывать порт Docker 2375 не требуется. На Windows нужен Docker Desktop и каталог проекта на локальном диске. На Linux используется тот же образ и абсолютный путь проекта. Сброс выполняется штатной последовательностью Supabase stop --no-backup и start, чтобы Auth, база и Storage всегда пересоздавались вместе.

Зависимости образа устанавливаются с BuildKit cache mount для pnpm store. Кэш принадлежит только сборкам этого проекта и не включается в файловые слои образа. Это соответствует официальной схеме pnpm.

Документация собрана на Astro Starlight: pnpm docs:dev.