Создание нашей CMS для обновлений: когда строишь для запуска, а не для планирования

Создание нашей CMS для обновлений: когда строишь для запуска, а не для планирования

Randal Eastman
Randal Eastman Founder & CEO
• 3 мин чтения

В прошлый понедельник я решил создать простую систему управления контентом для раздела обновлений. Цель была простой: упростить Оле (нашему руководителю операций) публикацию быстрых наблюдений о брендах без работы с Hugo или Git.

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

Ловушка “облегчить работу”

Вот в какую иллюзию основателя я попал: “Моей команде нужны более простые инструменты”.

Проверка реальностью? Мне нужны были более простые инструменты.

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

  1. Открыть VS Code
  2. Создать новый файл Markdown
  3. Правильно отформатировать YAML front matter
  4. Добавить таксономические теги (рынки, секторы, атрибуты, сигналы)
  5. Связать с соответствующими брендами/основателями/инсайтами по slug
  6. Не забыть добавить путь к главному изображению
  7. Закоммитить в Git
  8. Отправить для запуска развёртывания
  9. Подождать 2-3 минуты для Cloudflare Pages
  10. Проверить живой сайт

Общее время: 15-20 минут для чтения на 3 минуты.

Неудивительно, что я не публиковал обновления.

Что я на самом деле создал

CMS для обновлений не изысканна. Это интерфейс React Admin, подключённый к Supabase, с пятью ключевыми функциями:

  1. Автозаполнение таксономии - Больше не нужно искать действительные slug рынков/секторов
  2. Связывание связанного контента - Выпадающий поиск брендов, основателей, статей инсайтов
  3. Загрузка изображений с предпросмотром - Перетаскивание главных изображений + поддержка галереи
  4. Редактор Markdown с живым предпросмотром - Пиши естественно, смотри результаты мгновенно
  5. Управление статусом - Рабочий процесс черновик → запланировано → опубликовано

Но вот в чём магия: это фиксирует всё в базе данных.

Настоящая победа: целостность данных

До CMS наш контент жил в трёх местах:

  • Статические файлы Hugo (источник истины)
  • База данных Supabase (частичная синхронизация через скрипты)
  • Мой мозг (метаданные, отношения, контекст)

CMS для обновлений изменила игру. Теперь каждое обновление автоматически:

  • Получает правильную таксономическую классификацию
  • Связывается с соответствующими сущностями (с отношениями UUID, а не просто slug)
  • Последовательно хранит метаданные автора
  • Отслеживает историю версий
  • Сохраняет отношения контента для будущих функций

Это не просто “более лёгкая публикация”. Это структурированный захват знаний.

Реальность индивидуального разработчика

Создание этой CMS научило меня кое-чему о соло-предпринимательстве: ваши инструменты формируют ваш результат.

Когда создание контента требует 10 ручных шагов, вы создаёте меньше контента. Когда связывание с брендом требует запоминания его точного slug, вы пропускаете ссылку. Когда таксономическая разметка кажется утомительной, вы недостаточно размечаете.

Плохие инструменты создают трение. Трение создаёт несоответствие. Несоответствие создаёт технический долг.

Хорошие инструменты не просто экономят время — они улучшают качество, делая правильное проще неправильного.

Что дальше

Эта CMS работает и приводит в действие наш раздел обновлений прямо сейчас. Но это также прототип для чего-то большего:

  • Профили основателей с отслеживанием отношений
  • Рабочие процессы обогащения данных брендов
  • Конвейер производства статей инсайтов
  • Межконтентная аналитика (какие основатели упоминают какие бренды?)

Когда вы строите платформу аналитики о брендах Глобального Юга, ваши внутренние инструменты И ЕСТЬ ваш продукт.

CMS для обновлений была первым днём. Ещё многое предстоит построить.


Метазаметка: Это обновление было написано в CMS для обновлений, опубликовано одним кликом и автоматически развёрнуто на всех трёх языках (EN/RU/ZH). Общее время: 8 минут. В этом и суть.

Хотите следить за процессом разработки? Я делюсь техническими решениями и обновлениями разработки в LinkedIn и Twitter/X.