20080903

Простая CMS для AppEngine

Я далёк от серьёзной веб-разработки. Однако довольно регулярно мне приходится делать или браться поддерживать/изменять разные небольшие сайты (до 10–20 страниц). Надо сказать, что готовые решения в этой весовой категории меня ни разу не удовлетворяли.

  • Полноценные CMS всегда оказывались слишком тяжёлые (слишком универсальные) и навязывали слишком сложную (ИМХО) модель и структуру сайта. Их код слишком большой, чтобы можно было что-то быстро под себя переделать. В общем, в программировании я не любитель «отсекать лишнее».
  • Комбинирование языков облёгчённой разметки (Markdown, reST), щепотки PHP и готовых систем шаблонов (вроде Smarty) решало задачу, но требовало решать её каждый раз заново («лепить»).
  • Собственный набор макросов m4 для генерации сайтов был не очень удачен (но «велосипед был вновь изобретён»).
  • Попытки использовать Google Pages или облегчённые вики в качестве движка оставили смешанное чувство (здесь нужно долго и нудно «замазывать»).

В общем, на каникулах развлёк себя знакомством с Google AppEngine (который предоставляет бесплатный и масштабируемых хостинг для веб-приложений), а заодно, в свете того, что нужно сделать очередной мини-сайт, решил сделать для AppEngine простую мини-CMS. Требования у меня к ней были такие:

  • Максимально простая модель сайта: «плоский» сайт из нескольких страниц с автоматически генерируемым «меню».
  • Человек далёкий от веб-разработки должен иметь возможность легко изменять содержимое сайта. Легко — это значит не только «не зная HTML», но и «без страха перед навороченной админкой», и «не зная английского».
  • Должна быть возможность использовать облегчённые языков разметки (Markdown, reST), которые мне кажутся более предпочтительными, чем WYSIWYG-редакторы.
  • Код должен быть достаточно коротким и простым, чтобы понять и изменить его было легко.
  • Доступность бесплатного безрекламного хостинга для динамического сайта:)
В результате пары дней приятных усилий получилось вот что. Дабы подчеркнуть простоту кода (в данный момент это всего 5 кБ), я эту мини-систему управления сайтом нарёк Hello Web. Кое-что ещё надо доработать, но, в целом, уже вполне функциональная вещь. Сам сайт HelloWeb на ней же и работает.

Надеюсь, кому-то кроме меня эта мини-CMS окажется полезна. Лицензия — преданная гуглоанафеме, но свободная и мне симпатичная GNU Affero GPL. Собственно, узнал об этой политике Гугла по отношению к Affero GPL как раз попытавшись завести проект на Google Code. «Ну не хотят, так не хотят,» — решил я, — репозиторий исходного кода был размещён на freeHg.org.

В общем, исправления и дополнения кода приветствуются.