Astro vs EmDash CMS: фреймворк и его CMS-надстройка

Когда я написал статью про EmDash CMS, в комментариях прозвучал вопрос: «А чем это отличается от самого Astro? EmDash же на нём построен». Вопрос честный. Давай

Когда я написал статью про EmDash CMS, в комментариях прозвучал вопрос: «А чем это отличается от самого Astro? EmDash же на нём построен». Вопрос честный. Давайте разберёмся.

Astro — это веб-фреймворк. Быстрый, серверный, контент-ориентированный. EmDash — это CMS, построенная на Astro. Не конкурент, а надстройка. Чтобы понять зачем она нужна, сначала посмотрим, что умеет сам Astro.

Что такое Astro

Astro появился в 2021 году и с тех пор дорос до версии 6. Его фишка — Islands Architecture: страница по умолчанию рендерится в статический HTML, а интерактивные «острова» (React, Vue, Svelte) подключаются только там, где нужны. Результат — ноль JavaScript по умолчанию. Сайт на Astro примерно на 40% быстрее и содержит на 90% меньше JS, чем аналог на чистом React.

Ключевые возможности:

- SSG и SSR — статическая генерация по умолчанию, серверный рендеринг опционально через адаптеры (Node, Cloudflare, Netlify, Vercel)
- Content Collections — типизированные коллекции контента из Markdown, MDX, JSON, YAML. Схемы через Zod
- Astro DB — встроенная SQL-база на libSQL (совместима с Turso), опциональная, не обязательная
- View Transitions — SPA-подобные переходы между страницами без полной перезагрузки
- Actions — типизированные бэкенд-функции, вызываемые с клиента без ручного fetch
- Sessions — серверные сессии для корзин и пользовательских данных
- Интеграции — React, Vue, Svelte, Solid, Tailwind, MDX и сотни других через npm
- UI-agnostic — компоненты разных фреймворков на одной странице

Astro — это MPA (Multi-Page App), а не SPA. Он ближе к PHP/Laravel/WordPress по архитектуре, чем к Next.js. Серверный рендеринг, минимум клиентского JS, максимум производительности.

Что Astro не делает

И вот тут — самое интересное. Astro сознательно не занимается тем, что делает CMS:

- Нет админ-панели. Контент — это файлы в репозитории. Чтобы опубликовать пост, нужно сделать коммит и деплой
- Нет визуального редактора. Markdown в любимом редакторе кода — и всё
- Нет управления пользователями и ролями. Нет RBAC, нет разграничения прав
- Нет медиатеки. Изображения оптимизируются через @astrojs/image, но загружать и управлять ими — только через файловую систему
- Нет плагинной системы с marketplace. Интеграции — это npm-пакеты, устанавливаются через CLI, без UI
- Нет e-commerce из коробки. Корзину, чекаут и оплату нужно писать самому

Astro — фреймворк для разработчиков. Он даёт невероятную производительность и гибкость, но требует, чтобы контентом управлял человек, который умеет работать с кодом и git.

Что EmDash добавляет поверх Astro

EmDash берёт Astro как фундамент и добавляет слои, которых фреймворку не хватает:

- Админ-панель — визуальный интерфейс для управления контентом. Не файлы в редакторе, а нормальная админка с preview, черновиками, planned-публикациями
- MCP-сервер — 45 инструментов для ИИ-агентов. Агент может создавать коллекции, управлять контентом, настраивать схему базы, работать с медиа — всё через API, без админки
- Плагинная система — стандартные плагины в песочнице (256 КБ, 20 файлов) и нативные с React UI. Плагинный реестр на AT Protocol с валидацией и агрегацией
- Готовые скиллы для агентов — сборка сайта, создание плагинов, CLI-управление, портирование с WordPress
- DashCommerce — полноценный интернет-магазин: корзина, Stripe Checkout, подписки, мультивендор, брошенные корзины
- Авторизация — Passkey, GitHub, Google, Bluesky. Подключается плагинами
- SEO из коробки — schema.org, Open Graph, sitemap, правильные редиректы — всё настроено, а не «потом сделаем»
- Белая метка — кастомный логотип, фавиконка, название сайта. Можно отдавать клиентам под своим брендом

Сравнение по пунктам

Рендеринг: Astro — SSG + SSR, islands architecture. EmDash — тот же движок Astro, никаких изменений в рендеринге.

Контент: Astro — Markdown, MDX, JSON в репозитории, правится в редакторе кода. EmDash — админ-панель, Portable Text, визуальный редактор.

База данных: Astro — опциональная Astro DB на libSQL, требует ручной настройки. EmDash — SQLite/D1 встроена по умолчанию, готова к работе сразу.

Плагины: Astro — интеграции через npm и CLI, без UI-установки. EmDash — песочница с marketplace и установкой в один клик из админки.

Пользователи и роли: Astro — нет. EmDash — роли, Passkey, OAuth-авторизация через плагины.

Медиатека: Astro — файловая система, ручная оптимизация изображений. EmDash — встроенная медиатека с API для загрузки и управления.

E-commerce: Astro — отсутствует, всё пишется вручную. EmDash — DashCommerce с корзиной, Stripe Checkout, подписками и мультивендором.

AI и агенты: Astro — MCP-сервер только для документации. EmDash — MCP-сервер в ядре с 45 инструментами и готовыми скиллами для агентов.

Админка: Astro — нет. EmDash — полноценная админ-панель с preview и управлением публикациями.

Деплой: Astro — адаптеры под Cloudflare, Node, Netlify, Vercel. EmDash — Cloudflare Workers + Docker.

Для кого: Astro — разработчики. EmDash — разработчики, контент-менеджеры, маркетологи, клиенты.

Зачем нужна CMS, если есть Astro

Короткий ответ: Astro — для разработчиков, EmDash — для всех остальных.

Если вы делаете блог и вам комфортно писать посты в Markdown, коммитить их в git и деплоить через CI — берите Astro. Получите максимальную производительность и полный контроль.

Если нужно, чтобы контентом управлял не разработчик, а редактор, маркетолог или клиент — нужна админка. Если вы хотите, чтобы ИИ-агент мог создавать страницы и настраивать схему базы без участия человека — нужен MCP-сервер. Если строите интернет-магазин — вряд ли хотите писать корзину и Stripe-интеграцию с нуля.

EmDash не заменяет Astro. Он использует Astro как движок и добавляет слои управления контентом. Это как WordPress и PHP: WordPress не заменяет PHP, он построен на нём. Так и EmDash — не конкурент Astro, а его расширение для тех случаев, когда одного фреймворка недостаточно.

Интересно, что создатели EmDash сами активно контрибьютят в Astro — Мэтт Кейн (ascorbic) входит в core-команду Astro. Так что это не форк с обратной несовместимостью, а комплементарный проект, растущий внутри той же экосистемы.

Следить за EmDash можно на GitHub: github.com/emdash-cms/emdash. Документация Astro: docs.astro.build