Публичный сайт WebEdge
Наш lt/en/ru сайт на Astro, контент из WebEdge CMS.
Dev-storyЗадача
Хотели публичный сайт на трёх языках, синхронный с нашей же CMS, но отдаваемый как чистый статический HTML — без тяжёлого SPA, грузящего данные в рантайме.
Что делали
Astro собирает каждую страницу в статический HTML на билде; тексты и каталог проектов берутся из WebEdge CMS во время сборки, а типизированный фолбэк в репозитории держит сборку зелёной, когда CMS недоступна.
Результат
Редакторы правят контент в CMS, пересборка выкатывает новые статические страницы, и сайт продолжает собираться, даже когда CMS офлайн.
Dev-story статья
Публичный сайт WebEdge: как создавался проект
Витрина тянет тексты проектов из нашей CMS, но CMS постоянно уплывала: устаревшие флаги 'featured', уродливые авто-скриншоты и названия продуктов, которые нельзя показывать публично (бренды конкурентов, внутренние кодовые имена). Править 32 карточки вручную в CMS — не выход, нужен был источник правды, живущий в коде и проходящий ревью. Поэтому сборку переделали так, что выигрывает репозиторий, а CMS лишь закрывает пробелы.
Разделы
05
Модули
05
Стек
Astro + TypeScript
Почему появился проект
Хотели публичный сайт на трёх языках, синхронный с нашей же CMS, но отдаваемый как чистый статический HTML — без тяжёлого SPA, грузящего данные в рантайме.
Витрина тянет тексты проектов из нашей CMS, но CMS постоянно уплывала: устаревшие флаги 'featured', уродливые авто-скриншоты и названия продуктов, которые нельзя показывать публично (бренды конкурентов, внутренние кодовые имена). Править 32 карточки вручную в CMS — не выход, нужен был источник правды, живущий в коде и проходящий ревью. Поэтому сборку переделали так, что выигрывает репозиторий, а CMS лишь закрывает пробелы.
Что было создано
Astro собирает каждую страницу в статический HTML на билде; тексты и каталог проектов берутся из WebEdge CMS во время сборки, а типизированный фолбэк в репозитории держит сборку зелёной, когда CMS недоступна.
Статический сайт на Astro на литовском, английском и русском — маркетинговый фасад и портфельный каталог из ~32 проектов с отдельными страницами деталей. Контент берётся из CMS на этапе сборки и сливается с правками из репозитория; на выходе — чистый статический HTML без тяжёлого клиентского фреймворка.
Основные модули и путь пользователя
Слияние с приоритетом репозитория: контент из репо (слоганы, теги технологий, обложка, флаг 'featured') перекрывает CMS, а не объединяется по ИЛИ с устаревшими значениями CMS
Карта staticScreenshots, отдающая для каждого проекта закоммиченный cover.webp вместо авто-скриншотов из CMS
Этап дебрендинга, вычищающий из каждой карточки названия внешних продуктов и внутренние кодовые имена, но сохраняющий легитимные имена собственных технологий
Сетка главной приведена к аккуратному 3x3 из девяти избранных проектов, управляемому флагом из репо, а не CMS
Облегчённые карточки каталога: однострочные слоганы переписаны до <=81 символа с подстраховкой line-clamp-2, а вся глубина вызов/решение/результат перенесена на страницу деталей
Архитектура и технологические решения
Сделано на Astro, TypeScript, Tailwind.
Сделано на Astro; контент CMS забирается на сборке и сливается через резолвер с приоритетом репозитория; каждый проект несёт тексты EN/LT/RU, смысл которых согласован во всех трёх языках.
Результат и выводы
Редакторы правят контент в CMS, пересборка выкатывает новые статические страницы, и сайт продолжает собираться, даже когда CMS офлайн.
Сайт отдаётся как статический HTML с репозиторием в роли проверяемого источника правды, поэтому текст карточки, обложка и статус 'featured' меняются одним коммитом — без похода в CMS и без утечки устаревших данных в публичную сетку.
Связанные статьи
Читать дальше
Связанные истории проектов
Эти проекты близки по техническим или продуктовым решениям и показывают, как тот же принцип работает в другом контексте.
Dev-storyCMS
Динамический headless-CMS на webedge-db — типы контента, медиа, роли и публичный read-API, питающий наши сайты и статьи.
Dev-storyВоркфлоу Pi на локальной модели
Расширение Pi: локальная модель делает работу, GPT-5.6 только проверяет план и ревью.
Dev-storyДизайн-система WebEdge UI
204 Vue 3 компонента на Tailwind v4 — каталог блоков и playground, общие для всех интерфейсов.
Есть похожая идея?
Обсудить проект