Antofica

Технологии

Почему я сделал свою собственную CMS

Я годами работал с большими и дорогими системами управления контентом. В итоге написал свою — для себя.

Редактор plain: слева Markdown, справа предпросмотр страницы
Браузерный редактор plain: слева пишешь, справа видно готовую страницу.

CMS — система управления контентом — это программа, в которой пишут тексты для сайта, прежде чем нажать «Опубликовать». Самая известная из них — WordPress. Я же много лет работал с теми, что покрупнее: Sitecore, Umbraco, Sitefinity. Серьёзные системы, сделанные для банков и корпораций, для сайтов на тысячи страниц, в которых пишут десятки людей.

Они мощные. Они же и тяжёлые. К каждой прилагаются серверы, которые нужно держать в живых, база данных, которую нужно резервировать, лицензии, которые оплачиваются каждый год, и раз в несколько лет большое обновление, после которого что-нибудь обязательно ломается. В итоге я тратил больше времени на обслуживание инструмента, чем на то, чтобы в нём писать.

Чего мне хотелось на самом деле

Личному блогу не нужно ничего из этого. Ему нужно место, где пишут текст, и кнопка, которая делает его общедоступным.

Простые инструменты уже существовали — Jekyll, VuePress: они берут несколько текстовых файлов и превращают их в сайт. Я смотрел на них с надеждой. Но и там меня ждали фреймворки поверх фреймворков, сотни библиотек, скачанных откуда-то, и проекты, которые отказываются собираться через год после того, как ты последний раз их трогал.

Мне хотелось того, что помещается в голове. Файлов, которые я могу прочитать собственными глазами. Обычного JavaScript, без всего модного внутри. Чего-то, что всё ещё запустится, если я вернусь к нему через десять лет.

Так появился plain

Я делал его не для продажи. Я делал его для себя, потому что не находил того, что искал. Сейчас на нём работает несколько моих сайтов — в том числе тот, который вы читаете.

Для тех, кто не занимается программированием, это выглядит так: каждая статья — обычный файл в папке. Есть и редактор в браузере, для тех дней, когда хочется писать с телефона. Публикация — это одна кнопка, а история хранит каждую версию каждого текста: ничего не теряется. Нечего обновлять и нечему падать в три часа ночи.

Последняя деталь: теперь можно просто попросить

На днях я добавил то, чем, как мне казалось, не буду пользоваться так часто: набор инструкций для Claude — помощника, с которым я работаю прямо из терминала.

Я говорю ему обычными словами: «напиши статью о том, как я пришёл к тому, чтобы сделать свою CMS» — и он знает, куда положить файл, какие сведения должны стоять в его начале и как проверить, что сайт после этого действительно собирается. Он показывает, что получилось, я читаю, правлю — и только потом решаю, выходит ли это в мир. Публикация осталась за мной: это единственное правило, от которого я не хотел отступать.

Эта статья, честно говоря, именно так и началась.

Если захотите взглянуть

plain бесплатный и открытый: код лежит на виду, любой может им пользоваться или менять его. Если идея вам близка, поставьте ему звёздочку на GitHub — мне это не приносит ничего, но помогает другим его найти: github.com/plain-cms/plain.

Я годами строил сайты для других. Этот — первый, который я построил для того, чтобы больше не иметь с ним работы.

unelteplain