Редакционный дом: библиотека на Strapi 5
«Редакционный дом» — вымышленная headless-библиотека. Редактор работает в Strapi 5, отдельный Node-сайт читает опубликованные документы через закрытый Content API. Во всей серии сохраняются Анна Лесная, раздел «Вёрстка» и три статьи: «Сетка карточек CSS Grid», «Форма обратной связи», «Структура адресов библиотеки».
Предпосылки и версии
Нужны основы JavaScript, JSON, HTTP, командной строки и HTML. Полезно понимать переменные окружения и обычный серверный запрос. Авторские schema/config файлы копируются в JS-проект официального CLI; служебные файлы генератора сохраняются.
Выбран Strapi 5.57.0 по официальному релизу 07.10.2026, Node 24 LTS, SQLite 3. Документация прочитана 11.10.2026. Зависимости не установлены, lockfile не получен; native SQLite driver и platform compatibility требуют будущей локальной установки. REST 5 использует плоский data, documentId, status и locale; Public/Authenticated Content API остаются закрытыми.
Последовательность уроков
Каждый урок опирается на предыдущий результат. Новые имена не подменяют исходные данные; пример постепенно усложняется.
| № | Урок | Новый результат |
|---|---|---|
| 1 | Границы headless-библиотеки и локальное окружение | Разделены CMS, сервер сайта и браузер |
| 2 | Коллекция статей и устойчивые поля | Схема Article и первый черновик |
| 3 | Авторы и разделы как связи | Author и Category связаны с Article |
| 4 | Компоненты SEO и учебных ресурсов | Article содержит повторяемые Resources и SEO |
| 5 | Обложка, подпись и доступность медиа | Публичная обложка отделена от секретных вложений |
| 6 | REST API и идентификатор документа | Серверный запрос читает published по documentId |
| 7 | Фильтры, сортировка и страницы каталога | Предсказуемая выборка с ограниченным размером |
| 8 | Черновик и опубликованная версия | Изменения сохраняются отдельно от публикации |
| 9 | Роли редакции и серверные токены | Public закрыт, токены ограничены операциями |
| 10 | Локали и связанные переводы | Версии ru и en запрашиваются явно |
| 11 | Шаблоны отдельного сайта-потребителя | Node-сервер отдаёт каталог и страницы без токена в HTML |
| 12 | Закрытый предпросмотр черновика | Подписанная ссылка открывает короткий private preview |
| 13 | Webhooks и повторная доставка события | Подлинное событие сохраняется идемпотентно |
| 14 | Начальные данные и экспорт содержимого | Fixtures импортируются как drafts, экспорт описан отдельно |
| 15 | Резервная копия и изменение схемы | Составлена обратимая процедура изменения |
| 16 | Передача редакционной библиотеки | Выпуск описывает версии, права и непроверенные границы |
Учебные исходники
В ZIP входят полные config/schema/components, стандартные controller/service/router, snapshots уроков 2–5, fixtures, SVG учебной схемы, import script, отдельный site, матрица прав и restore/release specs. Fixtures не являются штатным Strapi export. Ru locale настраивается до импорта, cover и en-перевод добавляются вручную. Секретов, базы, uploads и установленного node_modules нет.
Статус выполнения
example_execution: not_run. Примеры, UI и команды не выполнялись. Ожидаемые ответы и состояния не выдаются за наблюдённые. Локальный набор сохраняет draft-статус; сборка, тесты и внешняя публикация в подготовку не входят.
Не проверены CLI installation, admin build, Content Manager UI, REST responses, import, публикация, locales, preview и webhook delivery. Нет production HTTPS/cache/search/worker. Plain text renderer не отображает cover/SEO/resources, хотя данные запрашиваются. Media URL не наследует приватность draft. Signed preview даёт временный bearer access к текущему draft, не snapshot/approval. Inbox подавляет точные byte-повторы, не гарантирует exactly-once полезное действие.