Недавно я произвел масштабное обновление сайта, чуть-чуть осовременив дизайн и начал переносить большую часть своих игр сюда. Но по-мимо всех украшательств мной был заменен весь бэкенд сайта. Точнее, теперь фронтенд и бэкенд разделены на две части улучшив мне сон. Ну и вместо того чтобы велосипедить свой бэк я решил прибегнуть к Headless CMS, выбрав для себя FastSchema.
Headless CMS - это CMS, где бэкенд сайта отделён от фронтенда. Можем разделить на условную "логику" и "рендер". Контент хранится формально (обычно в JSON), и вы доставляете его в любое приложение — сайт, мобильное приложение и т.д. Через API можно получать один и тот же контент для разных рендеров. Это даёт гибкость в разработке и упрощает интеграции.
FastSchema - это бекенд-всё-в-одном (BaaS) и веб-фреймворк на Go, совмещающий возможности Headless CMS и готового API. Его ключевые фишки, за которые он мне приглянулся:
Schema-driven - описываешь структуру (schema), FastSchema генерирует таблицы БД и CRUD-эндпоинты автоматически.
Авто REST API - при создании/изменении схемы соответствующие REST-эндпоинты доступны сразу (API-first подход).
И по мелочам - встроенная админ-панель, управление файлами, RBAC (роли/разрешения), поддержка SQLite/Postgres/MySQL, генерация OpenAPI (docs) и т.д.
То есть по факту - все похоже на PhpMyAdmin, но более прокаченный и без необходимости делать SQL, ведь их делают за тебя с помощью RESTful запросов.

Админка сильно отличается от админок обычных CMS... Ну естественно, в ином случае было бы странно. Но самая настоящая магия начинается когда мы начнем создавать структуры!

Вообще, структуры условно напоминают обычные таблицы в БД. Ну, вообще-то не условно, это они и есть!

Мы также можем создавать поля для данных, задавать им типы, флаги, только плюсом ко всему мы еще можем настроить как они будут отображаться из админки, чтобы она уже больше напоминала о полноценном серьезном сайте!

Это уже больше похоже на то что мы привыкли видеть в админке DLE, Wordpress, Drupal и других привычных CMS!
Описать все что происходит на фронтенде я могу лишь одной картинкой
То есть я буквально в коде что и делаю, так это посылаю запросы на API бекенда. И да, можно было написать и с помощью file_get_contents, это я уже просто сам для себя упрощения сделал.
В любом случае бэкенд себя неплохо показал, что возможно я буду писать также WAP версию сайта. Ведь теперь у меня нет проблем с тем, что данные будут сильно отличаться в разных версиях сайта.
Каковы же плюсы этого подхода?
Переносимость. Фронтенд можно переносить куда угодно, включая shared хостинг. При должной сноровке, владении JS, правильно расставленных разрешений и т.д. можно даже запустить на статическом хостинге по типу GitHub Pages, Hosting Web 1.0 или Neocities
Легковестность. Любая CMS общего назначения будет весить достаточно много. Потому что она рассчитана на покрытие всех возможных Use Case. Но Headless CMS настраивается под себя, что убирает все ненужные модули.
Но нужно также держать в уме, что данная система потребует больше времени на настройку. Ну и вопросы фронтенда теперь полностью ложиться на разработчика. Зато подобная гибкость может позволить больше выходить за рамки, в которые нас ставят большие CMS.
FastSchema - https://fastschema.com/