Редакционный headless CMSи блочный конструктор страниц.
verso
headless-cms next.js 16 · react 19 · tRPC v11 · prisma 7 · better auth

Контент с редактурой, а не CRUD.

Рабочий цикл редакции: коллекции, ревизии, канбан редполитики и headless-выдача. Блоки собираются мышью или с клавиатурой, каждое сохранение остаётся снапшотом, каждый статус — шаг редполитики.

CSS-иллюстрация редактора · учебные данные

метрики доверия из ci, а не из презентации

проверено, а не обещано

axe: 0 serious

serious и critical нарушения отсутствуют — проверено автоматическим аудитом.

e2e · скриншоты

e2e-тесты со скриншотными проверками интерфейса: регрессии видно сразу.

контраст ≥ 4.5:1

цветовые пары держат минимум AA — читается без напряжения.

MIT

свободная лицензия: код открыт полностью.

модули 01–06

всё, что нужно редакции

От черновика до публикации: модули закрывают редакционный цикл целиком.

01pipeline
статусы записи draft in_review scheduled published archived

коллекции

Полный жизненный цикл записи: draft → in_review → scheduled → published → archived — и канбан редполитики поверх.

02editor
блоки страницы
текстмедиа цитата+ блок
drag-and-drop · клавиатура

блочный конструктор

Собирайте страницу из блоков мышью или с клавиатуры — порядок и содержимое живут в ревизиях.

03history
снапшоты
ревизия 4 — сейчастекущая
ревизия 3откатить
ревизия 2откатить

ревизии

Каждое сохранение оставляет снапшот; откат к любой версии — в один клик.

04seo
редиректы
/old-page → /new-page · 301
циклы: 0 · цепочки: проверены
301 · 302

редиректы 301/302

Валидация цепочек и циклов происходит ещё до сохранения правила.

05auth
роли
adminmanager viewer+ роль
better auth

роли

Admin, manager и viewer — разграничение прав из коробки на Better Auth.

06a11y
доступность
axe: 0 serious · 0 critical
контраст ≥ 4.5:1
проверено axe

a11y

Axe не находит serious и critical; контраст держится не ниже 4.5:1.

headless api · webhooks

headless-выдача, которой можно доверить фронтенд

Ключи vrs_live_… и SSRF-safe вебхуки: интеграция без сюрпризов — от первого запроса до продакшена.

apiread-only
headless api
GET /api/v1/entries → 200
ключ: vrs_live_9f2c…
read-ключ видит только published

ключи vrs_live_…

Фронтенд забирает записи через GET /api/v1/entries; read-ключ отдаёт только опубликованное — черновики и правки не утекут.

webhooksssrf-safe
вебхуки
POST /hooks/cms → 500
retry #2 → 200 ok
приватные диапазоны закрыты

SSRF-safe вебхуки

Исходящие вебхуки с автоматическими ретраями; адресаты проверяются при сохранении — локальные хосты и приватные диапазоны недоступны.

процесс 4 шага

цикл редакции

От первой строки до ответа API — путь записи не выходит за пределы Verso.

01

запись

Черновик в коллекции: блоки собраны в конструкторе, автор назначен.

02

ревизия

Правки и снапшоты: карточка едет по канбану редполитики.

03

публикация

По расписанию или сразу: запись получает статус published.

04

headless-выдача

Front-end забирает запись через API — read-ключ vrs_live_… отдаёт только опубликованное.

демо kanban редполитики

редполитика — вживую

Переведите карточку дальше по циклу — ровно так в Verso двигаются записи между статусами.

draft
in_review
Интервью с гончаромревизия 4 · фото готовы
scheduled
published

канбан редполитики: карточка в in_review

Локальная иллюстрация, не подключается к сервисам: данные никуда не передаются.

запуск локально

поднять у себя

Клон, установка, запуск — дальше свои коллекции, своя редполитика и свои ключи.

терминал
git clone https://github.com/ssrjkk/verso.git
cd verso && npm install && npm run dev

axe: 0 serious · e2e скриншотные проверки · mit