Headless CMS на Git: Decap CMS без бэкенда и БД
Вы получили задачу: сайт-блог или документация, но хостинг БД не предусмотрен, бюджет на бэкенд нулевой. Решение — Decap CMS (бывший Netlify CMS). Это git-based headless CMS: контент хранится в репозитории как Markdown и YAML-файлы. Нет базы данных, нет отдельного бэкенда — только Git. Редактор работает в браузерном интерфейсе, нажимает «Сохранить», и за кулисами происходит коммит в репозиторий, а CI/CD собирает обновлённый сайт. Мы используем этот подход на десятках проектов — от небольших визиток до корпоративных порталов. Часто клиенты приходят с жалобами: сложность WordPress, дорогие хостинги БД, отсутствие версионирования контента. Decap CMS решает эти проблемы.
Почему выбирают Decap CMS, а не другие headless CMS?
Decap CMS подходит для небольших сайтов, где команда разработки готова к ограничениям git-модели: контент-менеджер не может обновить страницу в 2 часа ночи и увидеть изменения через 10 секунд — сначала пройдёт билд (1–3 минуты на Netlify/Vercel). Зато нет хостинга БД, нет бэкенда, ноль операционных расходов на инфраструктуру. Типичный стек: Next.js / Astro / Hugo + Decap CMS + Netlify/GitHub Pages.
| Критерий | Decap CMS | Strapi | Contentful |
|---|---|---|---|
| Хостинг | Статика (GitHub Pages, Netlify) | VPS или облако | SaaS |
| База данных | Нет (Git) | PostgreSQL / SQLite | Собственная |
| Цена | Бесплатно | Бесплатно для self-hosted | Платная подписка |
| Версионирование | Git-коммиты | Через плагины | Встроенное |
| Редакторы | До 30-50 человек | Любое число | По лицензии |
Decap CMS выигрывает в простоте и нулевой стоимости инфраструктуры. Если нужны сложные права доступа или API-first подход — лучше Strapi.
Какие типы сайтов подходят для Decap CMS?
Это отличный выбор для:
- Блогов и новостных сайтов с частотой публикации до 10 статей в день.
- Сайтов-визиток и лендингов с минимальным контентом.
- Документации (например, на Docusaurus или GitBook).
- Корпоративных порталов для внутреннего использования, где важна безопасность и аудит изменений.
Не рекомендуется для: интернет-магазинов с частым обновлением цен, медиа-сайтов с высокой нагрузкой, проектов с десятками редакторов.
Как начать: пошаговая инструкция для старта
- Выберите генератор статики. Astro, Hugo или Next.js — любой поддерживает Markdown-контент.
- Создайте admin-директорию в публичной папке вашего сайта с файлами
index.htmlиconfig.yml. - Настройте backend (GitHub, GitLab или Git Gateway) и коллекции контента.
- Запустите CI/CD на Netlify или GitHub Actions, чтобы сайт автоматически пересобирался после коммита.
- Добавьте редакторов через OAuth и обучите их работе с интерфейсом.
Весь процесс занимает от 3 до 7 дней для простого блога.
Настройка OAuth для корпоративного GitHub
Decap CMS поддерживает несколько бэкендов аутентификации:
- GitHub OAuth — через Netlify Identity или сторонний OAuth-прокси.
- GitLab — аналогично.
- Git Gateway — Netlify-специфичный прокси, не требует прямого доступа к репозиторию.
Для не-Netlify хостинга — отдельный OAuth-сервер:
backend: name: github repo: username/my-site base_url: https://your-oauth-server.com Минималистичный OAuth-прокси на Express разворачивается на Railway или Fly.io за 30 минут.
Структура проекта
my-site/
├── public/
│ └── admin/
│ ├── index.html # Интерфейс CMS
│ └── config.yml # Конфигурация коллекций
├── content/
│ ├── posts/
│ │ ├── first-post.md
│ │ └── second-post.md
│ └── pages/
│ └── about.md
├── src/
│ └── ... # Код фронтенда
└── astro.config.mjsТочка входа CMS — CDN-скрипт в public/admin/index.html. Никаких npm-пакетов для интерфейса — просто загружаем [email protected] из CDN.
Конфигурация коллекций
# public/admin/config.yml
backend:
name: github
repo: username/my-site
branch: main
media_folder: public/images/uploads
public_folder: /images/uploads
locale: ru
collections:
- name: posts
label: Статьи
folder: content/posts
create: true
slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
fields:
- { label: Заголовок, name: title, widget: string }
- { label: Дата публикации, name: date, widget: datetime }
- { label: Обложка, name: cover, widget: image, required: false }
- { label: Описание, name: description, widget: text, required: false }
- { label: Теги, name: tags, widget: list, required: false }
- { label: Контент, name: body, widget: markdown }
- name: pages
label: Страницы
files:
- label: О нас
name: about
file: content/pages/about.md
fields:
- { label: Заголовок, name: title, widget: string }
- { label: Контент, name: body, widget: markdown } Чтение контента в Astro
// src/pages/blog/[slug].astro
---
import { getCollection } from 'astro:content'
export async function getStaticPaths() {
const posts = await getCollection('posts')
return posts.map(post => ({
params: { slug: post.slug },
props: { post },
}))
}
const { post } = Astro.props
const { Content } = await post.render()
---
<article>
<h1>{post.data.title}</h1>
<time>{post.data.date.toLocaleDateString('ru-RU')}</time>
<Content />
</article> Процесс работы
| Этап | Что делаем | Результат |
|---|---|---|
| Аналитика | Изучаем требования, контент, дизайн | Техническое задание |
| Проектирование | Выбираем стек, проектируем коллекции | Архитектура проекта |
| Реализация | Настраиваем CMS, разрабатываем компоненты | Рабочая среда |
| Тест | Проверяем сборку, аутентификацию, редактор | Отчёт тестирования |
| Деплой | Настраиваем CI/CD, подключаем домен | Готовый сайт |
Что входит в работу и сроки
- Разработка бэкенда: конфигурация Decap CMS, настройка OAuth.
- Интеграция с генератором статики (Astro, Next.js, Hugo).
- Настройка CI/CD для автоматической сборки и деплоя.
- Обучение редакторов работе с CMS.
- Документация по структуре контента и развертыванию.
- Поддержка в течение 1 месяца после запуска.
Сроки: сайт-визитка или блог — 3–7 дней; корпоративный сайт с 5–8 типами страниц, кастомными виджетами и настроенным CI/CD — 2–3 недели.
Закажите консультацию
Свяжитесь с нами — расскажем, подходит ли Decap CMS для ваших задач, прикинем сроки и стоимость. Мы занимаемся веб-разработкой более 5 лет и реализовали свыше 50 проектов на headless CMS. Получите консультацию по вашему проекту.







