Strapi: open-source headless CMS с человеческим лицом

Обзор Strapi — самого популярного open-source headless CMS. Контентные типы, REST/GraphQL API, админка, плагины и опыт реального использования.

Strapi — headless CMS номер один на GitHub по звёздам. Open source, Node.js под капотом, гибкий конструктор контентных типов и авто-генерируемый REST + GraphQL API. Запущен в 2015 году французской командой и с тех пор вырос в экосистему из тысяч плагинов и сотен тысяч пользователей.

Сайт: strapi.io

Как работает

В отличие от WordPress, где контент жёстко связан с темой и фронтендом, Strapi — это чистый API. Вы создаёте контентные типы в админке (статьи, товары, лендинги, что угодно), наполняете их через визуальный редактор, а фронтенд получает данные по REST или GraphQL.

Админка на React, кастомизируется. Можно добавить поля любого типа: текст, rich text, медиа, даты, связи (one-to-many, many-to-many), JSON, enum, password. Компоненты для повторяющихся блоков. Динамические зоны для гибкой компоновки страниц.

После создания контентного типа Strapi автоматически генерирует API — контроллеры, роуты, модель. Всё, что остаётся разработчику — написать фронтенд.

Плагины и экосистема

Маркетплейс Strapi насчитывает сотни плагинов. Часть официальных: GraphQL, документация (авто-генерируемая по контентным типам), провайдеры для email и загрузок. Часть от сообщества: SEO, карты сайта, Algolia, Cloudinary, комментарии, Webhook.

Архитектура плагинов зрелая — можно писать свои под любые нужды. Это особенно ценно для агентств: натянул SEO-плагин, карту сайта, подключил Cloudflare Images — всё бесплатно.

Self-hosted vs Cloud

Strapi можно развернуть где угодно: VPS, Railway, Render, Heroku, Docker. База данных — SQLite для разработки, PostgreSQL или MySQL для продакшена. Self-hosted версия бесплатна.

Strapi Cloud — это managed-хостинг от создателей: $99/мес за проект. Авто-бэкапы, CDN, CI/CD из коробки. Для агентств и команд, которые не хотят возиться с серверами — хороший вариант.

Важный нюанс: Strapi v5 (актуальная) требует Node.js 20+ и использует ES модули. Документация обновилась, но старые туториалы для v4 местами нерелевантны.

Что хорошо

Гибкость контент-моделирования — главная фишка. Можно построить схему любой сложности: от блога до маркетплейса с взаимосвязанными сущностями. API генерируется автоматически, фильтрация, сортировка, пагинация — из коробки.

Ролевая модель (RBAC) позволяет разграничить доступ для редакторов, авторов и админов. Интернационализация (i18n) встроена — можно создавать контент на нескольких языках без костылей.

Админка приятная. Чистый Material Design, интуитивно понятная, быстрая. Редакторы контента осваиваются за час.

Что не очень

Strapi — это Node.js-монолит. Если проект растёт до миллионов записей, база начинает упираться. v5 содержит улучшения производительности, но до headless-решений на Go (вроде Payload CMS 3) далеко.

Обновления мажорных версий — боль. Переход с v3 на v4 был квестом, с v4 на v5 — полегче, но миграции всё ещё требуют рук. Для долгоживущих проектов это фактор.

TypeScript-поддержка улучшилась в v5, но не везде глубокая. Некоторые плагины сообщества всё ещё на чистом JS без типов.

Вердикт

Strapi — отличный выбор для 90% проектов, которым нужна headless CMS. Бесплатно, опенсорс, гибко, с отличной админкой и активным сообществом. Идеален для блогов, лендингов, корпоративных сайтов, небольших e-commerce. Для high-load сценариев присмотритесь к Ghost (если только контент) или Payload.