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

Выпуск приложения

Целевая схема: Vercel для Next.js, Supabase для Auth/PostgreSQL/Storage, Cloudflare для DNS домена foliovera.app.

В Vercel корень приложения — apps/web. Установка выполняется из monorepo с pnpm и lockfile. Переменные production задаются в защищённых настройках проекта:

Переменная Назначение
APP_ORIGIN https://foliovera.app
SUPABASE_URL URL целевого Supabase проекта
NEXT_PUBLIC_SUPABASE_URL Тот же публичный API URL
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY Publishable key
ENABLE_EXPERIMENTAL_COREPACK 1, выбор закреплённой версии pnpm

Перед применением миграций следует проверить точный project ref и резервную копию существующей базы. Начальный seed не должен создавать тестовых пользователей в production. Вход ограничен приглашёнными членами семьи.

Работающее приложение использует publishable key и пользовательскую сессию; права ограничиваются RLS. Административный ключ не нужен в Vercel для обычных экранов и API. Он требуется только отдельной операции первичного создания участников; храните его в защищённом окружении этой операции.

Production SMTP настроен через Resend с отправителем login@foliovera.app, сервером smtp.resend.com, портом 465 и отдельным ключом отправки только для этого домена. DKIM, SPF и MX подтверждены. Это подтверждает конфигурацию, но не заменяет проверку доставки magic link и входа на production-домене.

Миграции запускаются через официальный Supabase CLI с проверкой сертификата и имени узла. Прямое подключение предпочтительно для миграций. На текущем компьютере нет маршрута IPv6, а соединение Session Pooler завершилось ошибкой. Первичное развёртывание выполнено через официальный migration endpoint Supabase Management API. API сам присваивает версии с точностью до секунды: запросы выполняются последовательно, с уникальным Idempotency-Key и интервалом больше секунды. Имена локальных файлов приведены к версиям из ответа API; SQL не менялся. После синхронизации локальная тестовая база пересоздана и проверена. Не изменяйте вручную журнал применённых миграций. Для последующих выпусков проверяйте совпадение истории с репозиторием перед применением новых миграций.

Docker задаёт BUILD_TARGET=docker для standalone-сборки. Vercel использует свой штатный адаптер Next.js без standalone-режима.

В Supabase настраиваются Site URL, точный callback /auth/callback, Google OAuth и SMTP для magic link. Google Cloud OAuth использует callback проекта Supabase. Секреты OAuth и SMTP не коммитятся. Публичная форма входа не показывает пароль.

После выпуска проверяются TLS, Google-вход, получение magic link, отказ постороннему пользователю, права ученика, загрузка закрытого файла и выход из системы. Production считается готовым только после успешной проверки всех критериев .agent/tasks/foliovera-mvp/spec.md.

Текущий проверенный статус выпуска хранится в evidence и verdict внутри задачи; наличие этой инструкции само по себе не означает выполненный деплой.