Інтеграція CMS Strapi для управління контентом

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Інтеграція CMS Strapi для управління контентом
Середня
~3-5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Інтеграція CMS Strapi для управління контентом

Strapi — headless CMS з відкритим вихідним кодом на Node.js. Надає адміністративну панель для управління контентом та автоматично генерує REST та GraphQL API за створеними типами контенту. Розгортується на власному сервері — дані залишаються під контролем.

Архітектура

Strapi складається з двох частин: Admin Panel — React-додаток для управління контентом, схемами та настройками; Backend — Node.js/Koa сервер з автогенерованими маршрутами API.

Headless-робочий процес:

Strapi Admin → створює контент
Strapi API   → обслуговує контент клієнтам
Frontend     → Next.js / Nuxt / мобільний додаток

Установка

npx create-strapi-app@latest my-cms --quickstart
# або з базою даних
npx create-strapi-app@latest my-cms \
    --dbclient=postgres \
    --dbhost=127.0.0.1 \
    --dbport=5432 \
    --dbname=strapi \
    --dbusername=strapi \
    --dbpassword=secret

Підтримані бази даних: SQLite (розробка), PostgreSQL, MySQL/MariaDB.

Content Types

Створюємо через Content-Type Builder у admin (drag-and-drop) або вручну:

src/api/article/content-types/article/schema.json
{
  "kind": "collectionType",
  "collectionName": "articles",
  "info": {
    "singularName": "article",
    "pluralName": "articles",
    "displayName": "Article"
  },
  "attributes": {
    "title":       { "type": "string", "required": true },
    "slug":        { "type": "uid", "targetField": "title" },
    "content":     { "type": "richtext" },
    "cover":       { "type": "media", "allowedTypes": ["images"] },
    "author":      { "type": "relation", "relation": "manyToOne", "target": "plugin::users-permissions.user" },
    "publishedAt": { "type": "datetime" }
  }
}

Зміни схеми автоматично створюють міграції при наступному запуску.

API-запити

# Отримати всі статті
GET /api/articles

# З populate для зв'язків
GET /api/articles?populate=cover,author

# Фільтрування
GET /api/articles?filters[title][$containsi]=strapi&filters[publishedAt][$notNull]=true

# Сортування та пагінація
GET /api/articles?sort=publishedAt:desc&pagination[page]=1&pagination[pageSize]=10

Відповідь:

{
  "data": [
    {
      "id": 1,
      "attributes": {
        "title": "Getting started with Strapi",
        "slug": "getting-started",
        "content": "<p>...</p>",
        "publishedAt": "2025-03-01T10:00:00.000Z",
        "cover": { "data": { "attributes": { "url": "/uploads/cover.jpg" } } }
      }
    }
  ],
  "meta": { "pagination": { "page": 1, "pageSize": 10, "total": 42 } }
}

Кастомні маршрути та контролери

// src/api/article/routes/custom-article.js
module.exports = {
  routes: [
    {
      method: 'GET',
      path: '/articles/featured',
      handler: 'article.featured',
    },
  ],
};

// src/api/article/controllers/article.js
module.exports = {
  async featured(ctx) {
    const articles = await strapi.entityService.findMany('api::article.article', {
      filters: { featured: true, publishedAt: { $notNull: true } },
      sort: { publishedAt: 'desc' },
      limit: 6,
      populate: ['cover'],
    });
    return { data: articles };
  },
};

Lifecycle Hooks

// src/api/article/content-types/article/lifecycles.js
module.exports = {
  async beforeCreate(event) {
    const { data } = event.params;
    if (!data.slug) {
      data.slug = slugify(data.title);
    }
  },
  async afterCreate(event) {
    const { result } = event;
    // сповітити канал, очистити кеш, індексувати в Algolia
    await notifyChannel('new-article', result.id);
  },
};

Інтернаціоналізація

Вбудований плагін i18n:

# Включити у admin: Settings → Internationalization → Add locale

У схемі увімкнути pluginOptions: { i18n: { localized: true } } для потрібних полів. API: GET /api/articles?locale=uk.

Деплой на production

# docker-compose.yml
services:
  strapi:
    image: node:20-alpine
    command: yarn start
    environment:
      NODE_ENV: production
      DATABASE_URL: postgres://user:pass@db:5432/strapi
      JWT_SECRET: ${JWT_SECRET}
  db:
    image: postgres:16

Для production виносимо медіафайли в S3 через @strapi/provider-upload-aws-s3.

Терміни

Установка, настройка типів контенту, REST API, права доступу, деплой — 3–5 днів. З кастомними плагінами, i18n, вебхуками, моніторингом — 1–2 тижні.