ThrustCMS — система управления контентом на Python с ИИ
Система управления статичным сайтом без базы данных: контент в JSON, наполнение с помощью ИИ и автоматическая сборка в HTML.
Большинство систем управления контентом работают по одной и той же схеме: база данных хранит контент, серверный движок собирает страницы на лету, а посетитель получает динамический ответ. ThrustCMS идёт другим путём — контент хранится в JSON-файлах, текст обрабатывается искусственным интеллектом перед сохранением, а скрипт сборки превращает всё это в готовые статические HTML-страницы. Ниже разбираем, как это устроено и зачем такой подход нужен.
Технологический стек
ThrustCMS построена на наборе технологий, который обеспечивает скорость разработки и минимальный вес системы:
- Python— основной язык, на котором написана вся логика CMS.
- FastAPI— современный асинхронный веб‑фреймворк для бэкенда и API. FastAPI известен высокой производительностью, автоматической генерацией документации и удобной валидацией данных через Pydantic.
- Jinja2 — шаблонизатор, который отвечает за рендеринг HTML из JSON‑данных и шаблонов. Jinja2 — проверенный инструмент, который используется в таких проектах, как Flask и Pelican.
- HTMX— библиотека, позволяющая добавлять интерактивность в интерфейс админки без написания JavaScript. HTMX обменивается данными с сервером через HTML‑фрагменты, что делает интерфейс быстрым и отзывчивым при минимальном объёме клиентского кода. Сочетание FastAPI и HTMX — это растущий тренд в веб‑разработке: серверная часть отдаёт готовый HTML, а на клиенте не нужно тянуть тяжёлые SPA‑фреймворки вроде React или Vue. Это снижает сложность кодовой базы, ускоряет загрузку и упрощает поддержку.
Контент в JSON — без базы данных
Главное архитектурное решение ThrustCMS — отказ от традиционной реляционной базы данных. Весь контент хранится в структурированных JSON‑файлах на диске. Это даёт несколько преимуществ:
- Простота деплоя. Не нужно настраивать PostgreSQL или MySQL — достаточно скопировать файлы на сервер.
- Версионирование. JSON‑файлы можно хранить в Git, получая полную историю изменений контента без дополнительных инструментов.
- Прозрачность. Контент читается как обычный текст — его можно просмотреть, отредактировать вручную или обработать скриптами.
- Безопасность. Нет базы данных — нет SQL‑инъекций и атак через уязвимости СУБД.
- Портативность. Перенос проекта на другой хостинг сводится к копированию директории. Подход с файловым хранилищем не нов — так работают flat‑file CMS вроде Kirby и Grav, а также статические генераторы вроде Hugo и Jekyll. Но ThrustCMS добавляет к этой идее две вещи: визуальный редактор и интеграцию с ИИ.
Визуальный редактор и гибкая работа с типами контента
Контент в JSON‑файлах удобно читать программисту, но контент‑менеджеру нужен визуальный интерфейс. ThrustCMS решает это через встроенный редактор, построенный на HTMX: пользователь редактирует поля в браузере, а изменения сохраняются обратно в JSON‑файлы на сервере. Ключевая сила системы — в кастомных полях и типах записей. Структура не навязывается «из коробки»: вы сами определяете, какие поля нужны для каждого типа контента. Например:
- Для статьи можно задать: заголовок, подзаголовок, тело, теги, мета‑описание, обложку, авторство, дату публикации.
- Для страницы («О нас», «Контакты»): заголовок, основной текст, блоки с иконками, галерею, форму обратной связи.
- Для коллекции (каталог, портфолио, события): список элементов с фильтрами и сортировкой.
Подходит для небольших и средних интернет‑магазинов
Благодаря кастомным типам записей и полям ThrustCMS позволяет выстроить каталог так, чтобы у каждой категории товаров был свой набор характеристик — без лишних полей и компромиссов. Это особенно удобно для магазинов с разнородным ассортиментом: например, когда в одном каталоге соседствуют компьютеры, мебель и бытовая техника. Вот какие практические выгоды это даёт:
- Интерфейс остаётся чистым и понятным. В карточке процессора отображаются только релевантные параметры — сокет, частота, количество ядер, TDP. В карточке корпуса — форм‑фактор, габариты, количество слотов под накопители и т. п. Лишние поля (вроде «ширины шины» для корпуса или «частоты» для дивана) просто не появляются — их даже нельзя случайно добавить, потому что они не предусмотрены для этого типа записи.
- Шаблоны Jinja2 выводят ровно то, что нужно. Для каждой категории создаётся свой шаблон: один для процессоров, другой для диванов, третий для кофемашин. Шаблон «знает», какие поля показывать и в каком порядке, и не пытается вывести несуществующие атрибуты. Это упрощает верстку карточек и списков: нет необходимости писать условия вроде «если тип товара — процессор, то показать частоту».
- Коллекции помогают группировать и фильтровать товары. Все процессоры собираются в одной коллекции, диваны — в другой. Внутри коллекции можно сортировать товары по нужным параметрам: процессоры — по количеству ядер или цене, диваны — по габаритам или материалу обивки. При этом карточки выводятся с набором характеристик, который имеет смысл именно для этой группы.
- Структура легко масштабируется. Если магазин решает добавить новую категорию — например, «Охлаждение» или «Постельное бельё» — достаточно создать новый тип записи и задать для него нужные поля. Никаких миграций базы данных, изменений схемы или сложных скриптов: система сразу готова работать с новым типом контента. Такой подход идеально подходит для магазинов, где товары сильно различаются по набору параметров и не укладываются в единую жёсткую таблицу. Например, для магазина комплектующих это означает, что характеристики подбираются точно под тип товара, а интерфейс и шаблоны не усложняются универсальными полями, которые нужны лишь небольшой части ассортимента.
Интеграция ИИ в контент и код
ИИ в ThrustCMS — не отдельный модуль, а встроенная часть рабочего процесса:
- Обработка текста перед сохранением. Когда контент‑менеджер пишет описание товара, ИИ может улучшить текст: проверить грамматику, переформулировать абзацы, подобрать заголовок, сгенерировать мета‑описание для SEO или адаптировать тон под целевую аудиторию. Текст проходит через языковую модель до того, как попадает в JSON‑хранилище.
- Генерация контента. ИИ помогает создавать черновики описаний товаров, краткие выжимки характеристик, рекомендации «с этим покупают», FAQ по совместимости и сопутствующие материалы по заданному промпту.
- Генерация кода. ИИ интегрирован в процесс создания шаблонов и компонентов. По описанию задачи модель может предложить структуру шаблона Jinja2, разметку HTML или фрагменты логики на Python — это ускоряет разработку и снижает порог входа для нетехнических пользователей. Для интернет‑магазина это особенно полезно: можно быстро получить варианты описаний для десятков товаров, автоматически сгенерировать SEO‑тексты и мета‑теги, а затем отредактировать их в визуальном редакторе.
Сборка статических страниц и автопересборка
Когда контент сохранён в JSON, в дело вступает скрипт сборки. Он берёт JSON‑файлы, прогоняет их через шаблоны Jinja2 и генерирует готовые HTML‑страницы на диске. Результат — набор статических файлов, которые можно раздавать через любой веб‑сервер: nginx, Apache или даже CDN. Автоматическая пересборка запускается при каждом изменении контента в админке. Редактор сохранил карточку товара — CMS тут же пересобрала затронутые страницы. Это сочетает удобство динамической CMS со скоростью и безопасностью статики. Преимущества статической выдачи:
| Параметр | Статика (ThrustCMS) | Динамическая CMS |
|---|---|---|
| Скорость загрузки | Мгновенная, файл отдаётся напрямую | Зависит от СУБД и рендеринга |
| Масштабируемость | Легко — через CDN | Требует ресурсов сервера |
| Безопасность | Атаковать нечего — нет серверного кода | Уязвимости БД, плагинов, ядра |
| Зависимости | Только веб‑сервер | СУБД, PHP/Python, плагины |
| Стоимость хостинга | Любой дешёвый статический хостинг | VPS или выделенный сервер |
Кому подойдёт ThrustCMS
ThrustCMS занимает нишу между тяжёлыми CMS вроде WordPress и чистыми статическими генераторами вроде Hugo:
- Сайтам, где важна скорость и безопасность, но нужен визуальный редактор для контент‑менеджеров.
- Проектам с ограниченным бюджетом на хостинг — статика разместится на любом дешёвом тарифе.
- Командам, которые хотят контролировать контент через Git, храня историю изменений прямо в репозитории.
- Проектам, где ИИ — часть рабочего процесса, а не дополнительный плагин.
- Небольшим и средним интернет‑магазинам, где требуется гибкая структура товаров и разные наборы характеристик для разных категорий. Кастомные поля и типы записей позволяют выстроить каталог без ограничений жёсткой схемы, а шаблоны Jinja2 дают полный контроль над отображением карточек, списков и фильтров. Система особенно интересна для небольших и средних сайтов: корпоративных лендингов, портфолио, блогов, медиа‑проектов и каталогов. Для высоконагруженных e‑commerce‑платформ с тысячами товаров и сложной логикой ценообразования она, скорее всего, будет избыточно простой — тут нужны полноценные базы данных и серверная логика.
Итог
ThrustCMS — это пример того, как можно переосмыслить привычную архитектуру CMS: убрать базу данных, доверить контент JSON‑файлам, добавить ИИ в процесс создания текстов и кода, а на выходе отдавать посетителю чистую статику. Стек Python + FastAPI + Jinja2 + HTMX делает систему лёгкой, быстрой и приятной в разработке. А визуальный редактор с кастомными полями и типами записей закрывает главную претензию к статическим генераторам — отсутствие удобного интерфейса для управления контентом и гибкой структуры для каталогов и магазинов. Если хочется узнать больше об автономных CMS и том, как ИИ помогает писать тексты прямо в админке — стоит заглянуть в блог Матлинг.Код, где автор проекта делится разборами архитектуры и подходов к разработке.
Хотите такой же проект?
Расскажу, как сделать похожее решение под ваши задачи — от идеи до запуска.