Skip to content

Обзор ​

Проверено 2 октября 2026 для этого сайта документации · у продукта нет инфраструктуры: ничего из него не развёрнуто

Сегодня развёрнут только этот сайт документации, и его публикует каждый пуш в основную ветку: промежуточной среды нет, инфраструктуры продукта тоже пока нет.

Пуш в основную ветку — это публикация. Всё, что до него, происходит в отдельной ветке.

Что есть сегодня ​

ЧтоСостояние на 2 октября 2026
Исходный кодОдин закрытый репозиторий на GitHub, в котором лежат этот сайт и инструменты вокруг него
Сайт документацииСтатический сайт на DigitalOcean App Platform, собранный с помощью VitePress
ПубликацияАвтоматически при каждом пуше в основную ветку
ЯзыкиАнглийский, русский и украинский, собираются и публикуются вместе
Приложение и APIВход, роли, магазины, люди и приглашения созданы (6 и 11 октября 2026), не развёрнуты; см. Что создано
Мобильное приложениеНе создано, не развёрнуто
Админ-приложениеНастройки для администраторов платформы, отдельное приложение (18 октября 2026), не развёрнуто; его адрес в продакшене подготовлен, не применён

Как изменение попадает на сайт ​

  1. Работа идёт в отдельной ветке, в собственной рабочей копии.
  2. Проверка. Сайт собирается, затем проверяется то, чего успешная сборка не ловит: страница, которой нет на одном из трёх языков, мёртвая ссылка или якорь, страница, на которую ничто не ссылается. Затем сборка запускается, и каждая страница должна ответить.
  3. Ревью делает владелец. Агента-ревьюера нет: изменение читает и запущенный сайт смотрит человек, которому принадлежит проект.
  4. Слияние в основную ветку публикует.
  5. Кто-то открывает изменённую страницу на публичном сайте. Успешный деплой — ещё не видимая страница.

Так процесс был настроен 2 октября 2026. Через все пять шагов ещё не прошло ни одно изменение: коммиты, сделанные до этой даты, пушились прямо в основную ветку.

Рабочие копии и агенты ​

Одна задача получает одну рабочую копию, одну ветку и одного агента; этим управляет Orca. У каждой копии свои порты, поэтому несколько копий могут работать рядом, не задевая ни друг друга, ни основную копию. Агент доводит задачу до состояния «готово к ревью» и на этом останавливается; сам он изменения не сливает.

Скрипты, на которых это держится, — подготовка, запуск, проверка, уборка — 2 октября 2026 были пройдены от начала до конца в настоящей рабочей копии. Создавать копию через саму Orca ещё не пробовали.

Локальный запуск ​

Из корня репозитория make dev запускает сайт в режиме отслеживания изменений и открывает небольшую локальную панель: ссылки на локальный и опубликованный сайт на каждом языке, рабочие копии и то, что в них запущено, и живые логи. make check запускает проверку. И то и другое описано в README-файлах репозитория.

Отслеживание ошибок (GlitchTip) ​

Сделано и проверено локально 8 ноября 2026 года, нигде в развёрнутом не включено (SHIF-42, SHIF-43, приведено к общему стандарту в SHIF-44). API, приложение, приложение администратора и сайт умеют отправлять свои ошибки в наш собственный сборщик ошибок — GlitchTip на errors.dreamvention.com (он понимает протокол Sentry; организация dreamvention, по проекту на каждого: shiffty-api, shiffty-app, shiffty-admin, shiffty-website). Ничего развёрнутого ничего не отправляет, пока владелец не задаст переменные ниже. Браузерная часть подробно: Ошибки в браузере.

ПеременнаяКто читаетКогдаЧто
SENTRY_DSNAPIзапуск (App Platform: RUN_TIME, секрет)Ключ проекта API.
APP_SENTRY_DSN, ADMIN_SENTRY_DSN, WEBSITE_SENTRY_DSNприложение, приложение администратора, сайтсборка (BUILD_TIME); приложение и сайт читают свой ещё и при запускеСвой ключ каждого фронтенда.
SENTRY_ENVIRONMENTвсе четыресборка и запуск (RUN_AND_BUILD_TIME)Ровно prod, dev или local.
SENTRY_RELEASEвсе четыресборка и запускGit-коммит сборки.
SENTRY_AUTH_TOKENсборки фронтендовсборка, только BuildKit secretЗагружает source maps; никогда не build argument и никогда не в образе. С ним: SENTRY_URL (по умолчанию https://errors.dreamvention.com), SENTRY_ORG=dreamvention и APP_/ADMIN_/WEBSITE_SENTRY_PROJECT.
  • Выключено по умолчанию. Без ключа библиотека не запускается и не делает ни одного запроса: в тестах, в CI, локально. Пустое окружение или любое, кроме prod, dev и local, тоже выключает (GlitchTip хранит каждое имя окружения вечно, поэтому ничего не угадывается). Локальный запуск (make dev, ./orca/run.sh) всегда ставит local и отправляет, только если ключ задан в этой оболочке.
  • Что отправляется: ответы 5xx, необработанные ошибки и отклонения промисов, сбои загрузки части приложения, ошибки роутера и старта, упавшие фоновые задачи (с тегом job). Никогда — отказ, который человеку уже показан (любой 4xx), запрос без ответа, отменённый запрос, сетевая ошибка самого браузера и ошибка из расширения браузера.
  • Что вычищается до отправки: тела запросов, cookie, все заголовки, кроме user agent браузера, query string и фрагменты адресов, email, токены, ключи и пароли в любом тексте, вывод консоли, введённое с клавиатуры, текст чатов и страниц, локальные переменные, имя машины. Человек — только его id. Нет сессий, трассировки (tracesSampleRate: 0), записи экрана и профилирования.
  • Релиз и source maps: релиз — git-коммит; source maps фронтендов hidden, делаются и загружаются, только если у сборки есть токен, и файл .map никогда не отдаётся.
  • Как проверить: с окружением local и тегом task=<задача> вызвать в каждом рантайме одну необработанную ошибку и одно необработанное отклонение; сборщик отвечает 200, события появляются в проекте этого приложения. 4xx, отменённый запрос и сетевая ошибка появиться не должны, как и ?token=… из адреса и строка из консоли. Сделано для SHIF-44 8 ноября 2026 года (события с тегом task=SHIF-44).

Имена переменных — в api/.env.example и в .env.example каждого фронтенда; их значений в репозитории нет.

Чего нет ​

  • Нет непрерывной интеграции. Проверка запускается на машине разработчика. На сервере ничто не остановит пуш, который её пропустил.
  • Нет промежуточной или предварительной среды. Публичный сайт — единственная развёрнутая копия.
  • Нет мониторинга. Опубликованный сайт проверяется, только пока у кого-то открыта локальная панель. Отслеживание ошибок есть в коде с 8 ноября 2026, но нигде не включено; см. Отслеживание ошибок (GlitchTip).
  • Трекер задач не подключён. Задача — это то, с чем создана рабочая копия.
  • Нет инфраструктуры для продукта. Хостинг, база данных, секреты, резервные копии и выпуск мобильного приложения не определены; см. Архитектуру. Единственное высказанное намерение — что более поздний сервис солвера будет работать в Kubernetes рядом с API; см. Агент и солвер.

Что читать дальше ​