diff --git a/docs/backend-quickstart.md b/docs/backend-quickstart.md
new file mode 100644
index 0000000..6a8ec5d
--- /dev/null
+++ b/docs/backend-quickstart.md
@@ -0,0 +1,80 @@
+# Гайд: как встроить конструктор диаграмм в поле Bitrix
+
+Короткая практическая версия — только три вопроса: куда положить билд, как собрать HTML и куда писать начальное значение. Про полноценный переиспользуемый тип свойства инфоблока (регистрация, `ConvertToDB` и т.п.) — отдельный документ, [`docs/bitrix-integration.md`](./bitrix-integration.md). Если поле одно и на одной странице — этого гайда достаточно.
+
+## 1. Куда положить билд конструктора
+
+Приложение — статическая сборка (`npm run build` → `dist/`), которая раздаётся тем же nginx, что и сам портал. Ничего разворачивать отдельно не нужно.
+
+1. Собрать в репозитории `portal-chart-builder`:
+ ```
+ VITE_BITRIX_ORIGIN=https://ВАШ-ДОМЕН-ПОРТАЛА VITE_BASE_PATH=/local/diagram-app/ npm run build
+ ```
+ - `VITE_BITRIX_ORIGIN` — origin портала (без пути). Обязателен — без него приложение намеренно не запустится (защита от случайного `postMessage('*')`).
+ - `VITE_BASE_PATH` — подпуть, под которым будет отдаваться приложение. Должен совпадать с тем, куда положите `dist/` на шаге 2.
+2. Скопировать содержимое `dist/` в `local/diagram-app/` внутри каталога сайта на сервере (тот же каталог, где лежит остальной код портала — `bitrix_www`/аналог на проде).
+3. Готово: приложение доступно по `https://ВАШ-ДОМЕН-ПОРТАЛА/local/diagram-app/index.html`.
+
+**При каждом повторном деплое** (обновили React-приложение, положили новый `dist/` поверх старого) — добавляйте к `src` iframe cache-busting параметр (`?v=<дата/хэш билда>`). У `.html`-файлов на большинстве Bitrix-стендов стоит `Cache-Control` на 30 дней — без версии в URL браузер администратора может продолжать открывать старый `index.html` со старыми хэшами JS/CSS ещё месяц.
+
+## 2. Как сформировать HTML
+
+Три части: скрытое поле со значением, iframe с приложением, скрипт-мост между ними.
+
+```html
+
+
+
+
+```
+
+Как это работает:
+- iframe грузит приложение → оно шлёт мосту `{ type: 'diagram:ready' }`.
+- Мост в ответ шлёт `{ type: 'diagram:init', payload: input.value }` — приложение рисует диаграмму из этого значения (или пустой холст, если `payload` пуст).
+- Каждая правка в редакторе прилетает мосту как `{ type: 'diagram:change', payload: '' }` — мост тут же кладёт её в `input.value`.
+- Дальше это обычный `` внутри формы: если у него есть `id`, `name` и он лежит в `