Это первый пост, отправленный в БД через workflow «файл — источник, БД — рантайм».
Пост хранится в виде трёх markdown-файлов: en.md, de.md, ru.md. Английский файл — единственный авторитетный источник. Немецкий и русский — переводы, выполненные внутри dev-цикла. Каждая отправка вычисляет content hash; для одинаковых файлов отправка превращается в no-op.
Что это проверяет
- Скрипт scaffold создаёт frontmatter со стабильным UUID.
bun run content:checkсообщает о пропущенных языках и устаревших переводах.bun run content:pushсоздаёт пост и одну ревизию на каждый язык.- Повторная отправка без правок — no-op (skip по хэшу).
- Маршрут предпросмотра
/admin/content/posts/preview/<slug>/<locale>рендерит из файла и показывает баннер с состоянием синхронизации с БД.
Почему сначала файл
Файлы лежат в git. Переводы проверяются в pull request, а не в CMS. Cony пишет тот же файл, который читает разработчик. БД — лишь быстрый индекс; ничего оригинального в ней не появляется, минуя файл.