Перейти к содержимому
hellomaks.com portfolio home page — intro and featured projects

Персональный сайт

Maks
2 минуты чтения

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

Собрал целиком: фронтенд, настройку CMS и модель контента, обе локали, SEO, деплой.

hellomaks.com home page top — navigation bar and intro

Почему PayloadCMS

Не хотелось брать WordPress, Drupal или Joomla — хотелось попробовать что-то новое. Писать всё с нуля — тоже не вариант: заодно хотелось попрактиковаться с Next.js и React на сервере. Пока перебирал варианты, наткнулся на PayloadCMS.

Понравилась сама модель разработки: кастомные поля я описываю в коде, фронтенд на Next.js и React, а базу можно выбрать — MongoDB, SQLite или PostgreSQL. Взял PostgreSQL — ради практики с миграциями.

Payload написан на TypeScript, типы генерируются прямо из схемы — и рефакторинг становится безопаснее. Фронтенд при этом целиком мой: Payload отдаёт данные, Next.js рендерит.

Деплой и хостинг

Работает всё на моём VPS, в docker-compose. Сервисов несколько: контейнер с самой CMS (Next.js вместе с Payload) и отдельный — с базой PostgreSQL. Перед сайтом стоит Cloudflare — CDN и кеширование статики.

Отдельно собирается образ для миграций. Прод-версия — это скомпилированный standalone-бандл Next.js: лёгкий, без исходников и dev-инструментов, только то, что нужно для работы сайта. Прогнать из него миграции схемы уже нельзя, поэтому из того же Dockerfile собирается второй образ — с полным кодом и зависимостями. На релизе он применяет миграции (payload migrate) до того, как поднимется новая версия приложения. Через него же я запускаю разовые скрипты, когда надо поправить контент напрямую.

Сейчас на Payload держится всё: посты в блоге, проекты в портфолио, контакты. Админку тоже подогнал под себя.

Технологический стек

  • Фронтенд: Next.js 16 (App Router), React 19 Server Components, Tailwind CSS 4
  • Бэкенд и CMS: PayloadCMS 3 (Next.js + TypeScript), PostgreSQL
  • Хостинг: VPS, Docker Compose
  • CDN и edge: Cloudflare
  • Почта: письма из контактной формы через SMTP (Brevo)
  • Редактор: Lexical в Payload — визуальный, а не голый Markdown

Поделиться этой публикацией