Когда встал вопрос, на чём публиковать статьи, я честно рассмотрел готовые варианты: WordPress, Ghost, статические генераторы. И понял, что все они предлагают мне либо чужую тему, которую придётся переделывать, либо инфраструктуру, которую придётся тянуть.
Тогда я написал свой движок. Весь — примерно четыреста строк Python.
Контент — это файлы
Каждая статья — обычный .md-файл с front matter в формате Hugo и Zola:
+++
title = "Заголовок"
date = "2026-09-29"
tags = ["engineering"]
draft = false
+++
Это решение я считаю главным. Контент не заперт в базе данных. Он лежит в git, версионируется, переносится в любой другой генератор без миграции. Если завтра я захочу переехать на Hugo — я просто скопирую папку.
Рендер без зависимостей
Markdown я тоже написал сам. Не потому что не мог поставить библиотеку, а потому что нужен был контроль: заголовки, код, таблицы, списки, цитаты — и безопасность. Весь текст экранируется, а ссылки вида javascript: нейтрализуются. Я не хочу, чтобы случайная опечатка в статье превратилась в дыру.
Редактор
Админка тоже моя: пишу в браузере, вижу превью, сохраняю черновик или публикую. Черновики не видны никому, кроме меня. Статью, которую вы читаете, я написал именно там.
Что оказалось неочевидным
Собственный движок — это не «сэкономить на CMS». Это ответственность за рендер, безопасность и бэкапы. Но взамен я получил полный контроль над дизайном и контентом, а это для песочницы важнее удобства готового решения.
Дальше — про мониторинг, который однажды спас меня от сюрпризов.
Загрузка…