Перейти к содержимому
Назад к портфолио

Клиентская работа · 2025–2026

GRIDLINE

Платформа начиналась как сайт на MODX, где я отвечал за frontend и CMS-часть. Летом 2026 года я полностью заменил MODX: приложение на Next.js с новой моделью данных в PostgreSQL, собственная админ-панель, self-hosted S3-хранилище для медиа и одноразовый пайплайн, перенёсший все проекты, новости, документы и файлы. Главным ограничением было SEO: каждый проиндексированный старый URL должен был продолжить работать без изменений в день переключения.

Статус
Пересобран на Next.js · сентябрь 2026
Роль
Full-stack разработчик (агентство)
Год
2025–2026
Полный стек
15 инструментов

UI/UX-дизайн был создан моим коллегой-дизайнером. Эти кейсы рассказывают о моей инженерной работе и реализации, а не представляют визуальный дизайн как мою авторскую работу.

Схема GRIDLINE: edge, приложение Next.js, админка, PostgreSQL и S3-хранилище
Схема архитектуры — клиент не раскрывается по NDA

Полный стек

  • Next.js 16
  • React 19
  • TypeScript
  • PostgreSQL 16
  • Prisma
  • better-auth
  • next-intl
  • TipTap
  • Garage (S3)
  • MapLibre GL JS
  • Tailwind CSS 4
  • Vitest
  • Docker
  • GitHub Actions
  • Cloudflare Tunnel

Что умеет сайт

  1. Три языковые версии каталога из сотен проектов с фильтрами, поиском, карточками проектов, интерактивной картой, новостями, документами и FAQ.
  2. Собственная админ-панель для новостей, проектов, регионов, документов, страниц, статистики, медиа, редиректов и пользователей: черновики, автосохранение и автоматические 301 при смене slug.
  3. Одна запись в базе на сущность с переводимыми полями вместо отдельного ресурса MODX Babel на каждый язык. Медиа хранятся в self-hosted S3 и отдаются через приложение с генерацией превью на лету.
  4. Полноценный SEO-слой: canonical URL, hreflang, отдельные sitemap для каждого языка, разметка Schema.org и карта старых редиректов, приводящая любой прежний URL к цели за один переход.

Что я сделал хорошо

  1. Перенёс все ресурсы и медиафайлы MODX. Каждая запись хранит исходный ID из MODX, поэтому импорт повторяем и прослеживаем. Вместо нечёткого сопоставления выбрал точное соответствие по ID.
  2. Сохранил позиции в поиске: каждый старый URL проверен на новом приложении с условием «ноль битых редиректов», а блокеры из SEO-аудита закрыты — отсутствие canonical, неверные языковые теги, нет структурированных данных.
  3. Покрыл систему примерно 650 тестами на реальной базе PostgreSQL. Образ собирается в CI, сервер только скачивает версии по тегам, а откат — это смена тега.
  4. Аккуратно довёл production-детали: режим сайта с ограничением по времени, отключающийся без деплоя, переключатель, приглушающий языки без контента, и отсечение сканеров до маршрутизации.

Что я бы улучшил

  1. Добавить слой кеширования и улучшить время до первого байта теперь, когда корректность подтверждена.
  2. Перенести оставшиеся зашитые в код показатели статических страниц в данные, управляемые из админки.
  3. Закрыть контентные пробелы, ожидающие материалов от заказчика: тексты разделов на всех языках, фото этапов в карточках проектов и финальную чистку старых slug.
Миграция GRIDLINE с MODX в PostgreSQL через проверяемый пайплайн импорта

Предыдущая версия

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

2025 – Sep 2026

Сайт на MODX Revolution

Frontend / CMS-разработчик (агентство)

  • MODX Revolution 3
  • PHP
  • pdoTools
  • MIGX
  • MODX TVs
  • Babel
  • HTML
  • SCSS
  • JavaScript
  • MapLibre GL JS
  • Vite

Я разработал frontend и CMS-часть насыщенной данными публичной платформы. Работа включала каталог проектов с фильтрами, подробные карточки, интерактивную карту, три языковых контекста, редакционные разделы и SEO-исправления, необходимые для запуска в production.

Какой была система

  • Каталог проектов с поиском, фильтрами по регионам и категориям, пагинацией, статусами, рисками, прогрессом, бюджетами, сроками, этапами, результатами и документами.
  • Интерактивная карта MapLibre с собственными маркерами и продуманной мобильной навигацией между картой и проектами.
  • Три языковых контекста для данных проектов, навигации, новостей, документов, поиска, дат, обратных отсчётов и служебных страниц.
  • Перевёл сложный публичный набор данных в управляемую редакторами модель MODX на TVs и MIGX.
  • Связал фильтрацию, карту, редакционный контент и три языковые версии в одном CMS-продукте.
  • Решил практические production-проблемы SEO и индексации, не оставляя их на потом.

Что я тогда хотел исправить

  • Добавить более чёткий типизированный слой данных между полями MODX, PHP-хелперами и frontend-компонентами.
  • Объединить повторяющиеся хелперы и обработку переводов, затем добавить автоматические тесты для поиска и комбинаций фильтров.
  • Оптимизировать и упростить код внутри шаблонов для более быстрой работы сайта и избавления от технического долга.
Следующий проектNIGHTSHIFT