Как мы построили atlasceo.ru на Astro 5: стек, архитектура, контент-слой
Сайт — это не «лендинг и блог». Это продуктовый конвейер.
atlasceo.ru публикует 5-10 премиум-статей в сутки. Каждая — с кастомными компонентами, AI-иллюстрациями, интерактивными блоками. Без единого ручного действия в верстке.
Это не магия. Это инженерное решение. Astro 5 + Tailwind 4 + React 19 + MDX + Vercel. Стек, который превращает файл в src/data/ в журнальную публикацию за 40 секунд сборки.
И нет, я не буду рассказывать «почему Astro — это круто» в стиле маркетинговой брошюры. Я расскажу, как мы строили, что ломалось, что работает и почему через полгода эксплуатации я не жалею ни об одном решении.
О чём эта статья
Полный технический разбор: от выбора фреймворка до деплоя. Стек, архитектура папок, контент-слой, MDX-компоненты, производительность, CI/CD. Всё, что нужно, чтобы повторить — или понять, почему не стоит делать иначе.
Эволюция: от Jekyll до Astro
Почему каждое поколение фреймворков решало не ту проблему
Прежде чем объяснять, почему Astro — сначала объясню, почему всё остальное перестало работать. Потому что контекст решений важнее самих решений.
Jekyll + GitHub Pages. Статические сайты. Быстро, бесплатно, мертво. Markdown без компонентов — как книга без иллюстраций. Для блога на 20 постов — идеально. Для контентной фабрики — нет.
Gatsby + GraphQL. Революция: данные как слой. Но GraphQL для контентного сайта — как микроскоп для забивания гвоздей. Билды по 8 минут на 200 страниц. Экосистема плагинов = dependency hell.
Next.js захватывает рынок. SSR, ISR, SSG — три аббревиатуры, которые означают «мы не знаем, какой рендеринг вам нужен, поэтому дадим все». 200KB JS-бандл для статической страницы с текстом. Зачем?
Remix, SvelteKit, Fresh — фреймворки «нового поколения». Каждый решает проблему по-своему. Ни один не решает главную: зачем отправлять JavaScript для страницы, которая его не требует?
Astro 3.0. Islands architecture. Ноль JS по умолчанию. Компоненты из любого фреймворка. Content Collections. Впервые статический сайт может быть и быстрым, и богатым.
Astro 5. Content Layer API, Server Islands, улучшенный MDX. Контентный сайт наконец получил фреймворк, который создан для контента. Не для приложений. Не для SPA. Для контента.
Видите паттерн? Индустрия 10 лет строила фреймворки для приложений и пыталась натянуть их на контентные сайты. Astro — первый, кто сказал: «Контент — это не приложение. Перестаньте обращаться с ним как с приложением».
Отправлять JavaScript для страницы, которая показывает текст — это не фича. Это баг. Баг индустрии.
Стек
Astro 5 + Tailwind 4 + React 19 + MDX: каждый элемент на своём месте
Стек — это не список технологий. Это набор решений, каждое из которых закрывает конкретную проблему. Вот наш и вот — почему.
Astro 5 — ядро. Content Layer API позволяет определить схему данных для статей: frontmatter с типизацией, валидация через Zod, автоматическая генерация TypeScript-типов. Ни одна статья не попадёт в билд без title, description, author, publishedAt. Фреймворк ловит ошибки до того, как они попадут в прод.
Tailwind 4 — не «утилитарный CSS», а дизайн-система. Директива @theme определяет все токены: цвета, шрифты, отступы, анимации. Один файл — и весь сайт визуально консистентен. Темная тема? Одна строка. Адаптив? По умолчанию. Типографика? @tailwindcss/typography с кастомными стилями для prose.
React 19 — точечно. 95% страниц — чистый Astro (ноль JS). React подключается через client:visible или client:load только для интерактивных виджетов: калькулятор ROI, форма обратной связи, навигационное меню. Islands architecture означает: React грузится только там, где он нужен. Остальная страница — статический HTML.
MDX — секретное оружие. Markdown + JSX = контент, в который можно встроить любой компонент. StatGrid, ComparisonTable, StepFlow, TimelineBlock — всё это живёт внутри статьи как обычный тег. Автор (или AI) пишет контент — и он сразу выглядит как журнальная публикация.
Сборка в цифрах
1,200+ страниц. Время билда: 38 секунд. Размер JS-бандла на контентных страницах: 0 KB. Lighthouse Performance: 98-100. Это не оптимизация — это архитектурное решение.
Контент как система
10 премиум-компонентов, которые превращают текст в редакцию
Контент-слой atlasceo.ru — это не «папка с файлами». Это конвейер с жёстким стандартом. Каждая статья проходит через одинаковую структуру, одинаковые компоненты, одинаковые CTA. Результат: 500 статей выглядят так, будто их верстал один дизайнер вручную. На самом деле их верстал ноль дизайнеров.
Классический блог на Markdown
Premium MDX-пайплайн Atlas CEO
Вот полный арсенал компонентов, которые доступны в каждой статье:
ModelHeader
Заголовок секции с номером, иконкой, подзаголовком и цветовым акцентом. Разбивает статью на логические блоки. Визуально — как разделы в журнале. Каждый блок самостоятелен и скроллится как единица.
StatGrid
Сетка 2-4 метрик с иконками и цветами. Превращает скучные числа в визуальный удар. Читатель видит «98/100» большими цифрами — и запоминает. Текстом бы пролистал.
ComparisonTable
Таблица сравнения «до/после» с вердиктом. Идеальна для аргументации: почему X лучше Y. Вердикт внизу — как резюме для тех, кто не читает детали.
StepFlow
Пронумерованные шаги с описаниями. Для инструкций, пайплайнов, процессов. Визуально показывает последовательность — мозг воспринимает как план действий.
TimelineBlock
Хронологическая шкала событий. Идеальна для истории, эволюции, роадмапов. Highlight-элементы привлекают внимание к ключевым моментам.
Callout
Акцентный блок: warning, metric, insight, key, quote. Вырывает важную мысль из потока текста. Типы определяют цвет и иконку — читатель сразу понимает контекст.
PullQuote + ImageBlock + Divider + InlineCTA
Цитата с атрибуцией. Изображение с подписью. Визуальный разделитель (wave/dots/gradient). CTA-блок для конверсии. Четыре компонента, которые создают ритм и дыхание статьи.
Компоненты — это не украшение. Это семантика. StatGrid говорит «вот цифры». ComparisonTable говорит «вот выбор». Callout говорит «запомни это». Каждый компонент несёт функцию, а не декор.
📬 Строите контентный сайт на Astro? Подписывайтесь — разбираем архитектуру, компоненты и пайплайн Atlas CEO каждую неделю.
Подписаться в TG →Архитектура проекта
Файловая структура, которая масштабируется от 10 до 10,000 статей
Архитектура atlasceo.ru — это «convention over configuration» в чистом виде. Каждая папка имеет одну ответственность. Каждый файл лежит там, где его ожидаешь найти. Нулевая магия, максимальная читаемость.
src/
data/ # статьи (MDX) — по рубрикам
singularity/ # AI и сингулярность
business/ # бизнес, экономика, стратегии
build/ # стройка: технологии, стек, архитектура
core/ # ядро: модели, frameworks, benchmarks
components/
article/ # 10 premium MDX-компонентов
content/ # карточки статей, CTA, рубрики
widgets/ # React islands (калькуляторы, формы)
layout/ # Header, Footer, Navigation
layouts/ # ArticleLayout, BaseLayout
pages/ # Astro-роутинг
[rubric]/[...slug].astro # динамический роут статей
public/
media/generated/ # AI-изображения по slug
Принцип slug-папок
Каждая статья получает папку в public/media/generated/slug/. Внутри: hero.png, section-01.png, section-02.png и так далее. AI-пайплайн генерирует изображения и кладёт в нужную папку автоматически. Никакого ручного копирования, никакого «куда положить картинку».
Почему это работает на масштабе: добавление новой рубрики = одна папка в src/data/ + одна запись в конфиге Content Layer. Добавление нового компонента = один файл в src/components/article/ + один import в статье. Система растёт линейно, а не экспоненциально.
Производительность
Lighthouse 98-100 — не цель, а побочный эффект правильной архитектуры
Я не оптимизировал atlasceo.ru для Lighthouse. Я просто выбрал стек, который не мешает браузеру делать свою работу.
Как это достигается:
Zero JS by default. Astro не отправляет JavaScript, если вы его не попросите. Статья из 5,000 слов с 10 компонентами — это чистый HTML + CSS. Ноль килобайт JS. Браузер рендерит мгновенно.
Islands architecture. React-виджет калькулятора загружается с client:visible — только когда пользователь доскроллил до него. До этого момента — статический placeholder. Страница не ждёт, пока React проинициализируется.
Image optimization. Astro <Image /> компонент генерирует WebP/AVIF, srcset для разных размеров экрана, lazy loading по умолчанию. AI-иллюстрации в hero.png весят 200-400KB в оригинале, но отдаются в 60-80KB WebP.
Edge caching. Vercel кеширует каждую страницу на edge-ноде. Первый визит — 200ms TTFB. Повторный — 20-40ms. CDN делает то, что никакой SSR не сделает.
Частая ошибка
Люди ставят Next.js для контентного сайта и потом 3 месяца оптимизируют бандл. Удаляют лишние импорты, настраивают tree-shaking, борются с hydration mismatch. Решение проблемы, которую вы создали сами — это не оптимизация. Это расплата за неправильный выбор.
Деплой и CI/CD
Git push → Vercel build → прод за 40 секунд
Деплой atlasceo.ru — это один контракт, который никогда не нарушается:
Статья создаётся
AI-пайплайн (Content Factory) генерирует MDX-файл с frontmatter и компонентами. Файл попадает в src/data/{rubric}/{slug}.mdx. Изображения — в public/media/generated/{slug}/.
Git commit + push
Автоматический коммит через CI или ручной push. Vercel слушает main-ветку. Любой push = триггер билда.
Astro build
Vercel запускает astro build. Content Layer валидирует frontmatter через Zod. MDX компилируется в HTML. Tailwind purge удаляет неиспользуемые классы. 1,200 страниц за 38 секунд.
Edge deploy
Vercel раскатывает статику на 70+ edge-нод по всему миру. Preview deploy на каждый PR. Production deploy на push в main. Rollback за 3 секунды.
Cache invalidation
ISR (Incremental Static Regeneration) не нужен — мы full static. Новый билд = полный кеш. Vercel инвалидирует edge-кеш автоматически. Читатель видит новую статью через 60 секунд после push.
Экономика хостинга
Vercel Pro: $20/мес. За это: неограниченные деплои, preview на каждый PR, edge-кеширование, аналитика, Web Vitals мониторинг. Сравните с VPS за $50-100, где вы сами настраиваете nginx, certbot, CI/CD и молитесь, чтобы ничего не упало в 3 часа ночи.
Лучший ops — это отсутствие ops. Деплой должен быть скучным. Если деплой вызывает адреналин — вы делаете что-то не так.
Уроки и антипаттерны
Что сломалось, что починили и что бы сделали иначе
Полгода эксплуатации atlasceo.ru — это не только успехи. Это коллекция граблей, на которые мы наступили, чтобы вам не пришлось.
MDX и runtime-ошибки. MDX компилируется в build-time. Если AI сгенерировал невалидный JSX — билд падает. Решение: валидация MDX перед коммитом через кастомный скрипт. Ловим синтаксические ошибки до того, как они попадут в CI.
Tailwind 4 breaking changes. Переход с Tailwind 3 на 4 сломал 200+ компонентов. Новый синтаксис @theme, изменённые утилиты, другая работа с dark mode. Совет: не обновляйтесь на major версию в пятницу вечером. Классика, но мы наступили.
Content Layer и большие коллекции. При 1,000+ статей dev-server стартует за 12 секунд вместо 3. Решение: фильтрация коллекций в dev-режиме. В проде — полный билд. В деве — только последние 50 статей.
Изображения и размер репозитория. 500 статей x 5 изображений = 2,500 файлов в public/. Git-репозиторий растёт. Решение на будущее: вынос изображений в CDN (R2/S3) с lazy-загрузкой URL в frontmatter.
Главный урок
Стек — это не технологии. Стек — это ограничения, которые вы накладываете на себя. Astro ограничивает: никакого JS без причины. MDX ограничивает: контент = компоненты, не произвольная верстка. Vercel ограничивает: статика, edge, никакого stateful backend. Ограничения — это не минус. Ограничения — это архитектура.
Итог: стек, который работает на вас, а не наоборот
atlasceo.ru — это доказательство простой идеи: контентный сайт не должен быть сложным. Он должен быть правильно спроектированным.
Astro 5, Tailwind 4, React 19, MDX, Vercel — каждый элемент стека решает одну задачу и решает её хорошо. Никакого over-engineering. Никакого «а вдруг нам понадобится». Только то, что нужно сейчас — и архитектура, которая позволит добавить то, что понадобится потом.
Если вы строите контентный проект в 2026 году и выбираете Next.js — остановитесь. Подумайте. Посчитайте, сколько JavaScript вы отправите пользователю, который пришёл прочитать текст.
А потом посмотрите на Astro.
Лучший код — это код, которого нет. Лучший JavaScript на контентной странице — это ноль JavaScript. Astro понял это первым. Мы — вторыми.
📬 Хотите такой же стек и контент-пайплайн? Подписывайтесь — разбираем стройку Atlas CEO каждую неделю: архитектура, компоненты, AI-генерация, деплой.
Подписаться в TG →
Станислав Виниченко
Основатель Atlas CEO
"Будущее строится сейчас."
Рассылка Atlas CEO
Фронтовые сводки Сингулярности. Каждый день в 9:00. Бесплатно.
Подписаться в TelegramAtlas Graph
Что открыть дальше
Перелинковка держит пользователя внутри темы: сначала углубляем статью, затем переводим в продукт и следующий шаг.
Похожие статьи
Весь журнал →
Sony Vegas Pro 2026: рабочий стек, ROI и практический сценарий для команды
Анализ рабочего стека Sony Vegas Pro 2026: сравнение с альтернативами, критерии выбора для бизнеса, практический сценарий внедрения и ROI для команды. Экспертный гайд от AtlasCEO.
Voice и Video Communication 2026: рабочий стек, сравнение и сценарий для команды
Подробный разбор рабочего стека для voice и video communication в 2026 году: критерии выбора, риски, практические сценарии и план внедрения для руководителей и команд.
2ГИС в 2026: практический разбор альтернатив и рабочий сценарий
Руководство по использованию 2ГИС и альтернатив в 2026 году. Практические сценарии, критерии выбора, риски и план внедрения для руководителей и power-user. ROI, интеграция с AI и современные стратегии.
Продукты, которые усиливают эту тему
На каждой статье даём не только чтение, но и продуктовый следующий шаг.
Content Factory
120+ постов. 8 видео. 4 лонгрида. Каждый месяц. Автоматически. В вашем стиле. На 4+ платформах. Дешевле одного копирайтера.
AI-Трансформация
Мы не «внедряем ChatGPT». Мы перестраиваем архитектуру вашего бизнеса так, чтобы AI делал 80% работы. А вы — только то, что любите.
AI Business
Мы не «внедряем AI в старые процессы». Мы превращаем вашу экспертность в AI-компанию с маржой 60–90% и глобальным масштабом.