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; див. Агент і розв'язувач.

Куди далі ​