Клиент приходит с готовым React-приложением — контент живёт в JSON-файлах. Каждый релиз — копипаст данных через Slack, правки теряются, микроконтроллеры сходят с ума. Переход на Contentful — спасение, но неправильная схема контента превращает CMS в болото. Ошибки в типах полей или отсутствие валидации убивают масштабирование. Мы настраиваем Space так, чтобы разработчики и контент-менеджеры не проклинали всё на свете.
За более чем 5 лет работы с Contentful мы накопили сотни часов оптимизации. Например, один клиент терял до 20% контента при ручном переносе — после настройки Space с автоматической валидацией ошибки ушли полностью. Стоимость такой настройки варьируется от 80 000 до 150 000 ₽ в зависимости от сложности модели и количества окружений. Ниже — ключевые этапы профессиональной настройки.
Как спроектировать Content Model для масштабирования?
Content Model — скелет проекта. Неправильная нормализация ведёт к N+1 запросам и переусложнённым редакторским формам. Придерживаемся правила: один тип контента — одна сущность (статья, автор, категория). Для блога хватит 4–6 типов. Пример структуры:
| Компонент | Тип поля | Валидация | Локализация |
|---|---|---|---|
| title | Short text | required, unique | да |
| slug | Short text | unique, regex: ^[a-z0-9-]+ | нет |
| content | Rich Text | required | да |
| heroImage | Media (image) | - | нет |
| author | Reference | 1:1 to Author | нет |
| categories | References | many to Category | нет |
Пример Content Model для интернет-магазина
- Product: title, slug, description, price, images, categories
- Category: name, slug, parent (self-reference)
- Brand: name, logo, website
- Page: title, slug, content (Rich Text)
Всего 4 типа с минимальной depth. Нормализация позволяет избежать дублирования данных.
Используйте field-level locale для SEO-полей (title, description) — это даёт гибкость без дублирования контента. По данным официальной документации Contentful, правильная локализация с field-level locale сокращает объём дублируемых полей на 40%. Для проекта с 5+ локалями рекомендуется не превышать 10 Content Types — иначе производительность редакторского интерфейса падает.
Что выбрать: GUI, CLI или кодогенерацию?
CLI-подход в 3 раза быстрее ручного создания через GUI и позволяет версионировать модель в Git. Сравните:
| Способ | Скорость | Версионирование | Типизация |
|---|---|---|---|
| GUI | ~1 час | нет | нет |
| CLI | ~15 минут | да (JSON) | нет |
| Codegen | ~1 минута | да (TypeScript) | полная |
Для продакшена комбинируем CLI + кодогенерацию: экспорт модели, правки в JSON, импорт через CI. Это экономит 2 дня на каждом изменении модели и сокращает расходы на контент-менеджмент на 30–50%. Свяжитесь с нами для консультации по архитектуре Space — разберём вашу модель за 30 минут.
Настройка окружений и API-токенов
Используйте отдельные окружения для staging и production. Каждое окружение имеет свой CDA, Preview и CMA токены. Никогда не используйте CMA-токен на фронтенде — это дыра в безопасности.
# Создать окружение staging и скопировать модель из master contentful space environment create --name staging \ --environment-id staging --source master В SDK для фронтенда используйте CDA-токен с environment staging:
const client = createClient({ space: SPACE_ID, accessToken: STAGING_CDA_TOKEN, environment: 'staging', }) Автоматизация выгрузки модели в Git
Используйте Contentful CLI для экспорта модели без контента:
contentful space export --space-id xxx --skip-content --export-dir ./model Файл contentful-export-xxx.json хранится в репозитории. При изменении модели — импорт через CI в нужные окружения. Исключает человеческий фактор и ускоряет деплой. По официальной документации Contentful, это лучшая практика для командной работы.
Генерация TypeScript-типов из Content Model
Кодогенерация через cf-content-types-generator создаёт полные интерфейсы:
npx cf-content-types-generator \ --spaceId YOUR_SPACE_ID \ --token YOUR_CMA_TOKEN \ --out ./src/types/contentful.d.ts После этого импорт import { IBlogPost } from './types/contentful' даёт автокомплит и защиту от ошибок. Экономит 1–2 часа ручного описания TypeScript-типов на каждый проект.
Пошаговая инструкция настройки Space
- Анализ требований — определяем типы контента, поля, валидации (1 час).
- Создание Space и окружений — master, staging, dev через CLI (15 минут).
- Проектирование и импорт Content Model — создаём JSON-схему, импортируем через CLI (30 минут).
- Генерация типов и документация — кодогенерация TypeScript, написание readme (1 час).
Вся настройка занимает 1–2 дня и снижает операционные затраты на 20–30%. Стоимость типовой настройки — от 80 000 до 150 000 ₽ в зависимости от объёма. Экономия на ручном переносе контента достигает 2 000 ₽ в час.
Что входит в нашу работу?
- Анализ требований и проектирование Content Model
- Создание Space, окружений (production, staging, dev)
- Настройка API-токенов (CDA, Preview, CMA)
- Импорт/экспорт модели через CLI, интеграция в CI/CD
- Генерация TypeScript-типов и подключение к проекту
- Документация по работе с пространством для контент-менеджеров
Гарантируем: ни одного лишнего поля, полная валидация на уровне CMS, готовая к масштабированию архитектура. Мы работаем с Contentful более 5 лет — за это время реализовали более 30 проектов различной сложности. Типовой проект (4–6 Content Types, 2 локали, 2 окружения) настраиваем за 1–2 дня. Стоимость рассчитывается индивидуально — зависит от сложности модели и требований к автоматизации. Просто напишите нам — мы подготовим архитектуру и точный план работ.







