Локальная разработка
Требуются Node.js 24.20.0, pnpm 12.3.4, Docker Desktop и WSL 2 на Windows.
Точные версии зависимостей закреплены в манифестах и pnpm-lock.yaml.
Из корня репозитория:
pnpm install --frozen-lockfilepnpm db:startpnpm db:resetnode scripts/setup-local.mjspnpm db:testpnpm exec tsx apps/web/scripts/bootstrap-local.tsdocker compose up --build --wait webdocker 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 typecheckpnpm lintpnpm test:unitpnpm buildpnpm exec playwright install chromiumpnpm test:uppnpm test:e2eSQL-тесты работают в транзакции с откатом; запускайте их сразу после 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.