HomeLab

OFFROAD38 - от WordPress к своей платформе

OFFROAD38 - от WordPress к своей платформе

Домен: https://offroad38.ru
Назначение: платформа для offroad-маршрутов, выездов и сообщества.

Вводные

Изначально проект был на WordPress, но быстро уперлись в потолок:

  • треки были обычными постами
  • структура держалась на костылях (ACF)
  • админка была перегруженной
  • масштабируемость была практически нулевая

Решение: переписать проект с нуля.

Что сделали

  • полностью отказались от WordPress
  • разработали backend и frontend под задачу
  • перенесли данные (маршруты, выезды, медиа)
  • собрали минималистичную админку
  • вывели систему в прод

Разработка, миграция и запуск выполнены через Codex.

Архитектура

Схема: архитектура OFFROAD38

Mobile/SPA (frontend)
   |
   | REST API
   v
Node.js backend  ----->  Data (Track / Ride / Media)

Схема: модель данных (упрощённо)

Track 1 ---< Ride (event) >--- Participants
  |
  +---< Media (photos/videos/files)

Backend:

  • Node.js
  • REST API

Frontend:

  • SPA (ориентир на mobile-first)

Данные:

  • Track (маршрут)
  • Ride (выезд)
  • Media (фото, файлы)

Модель данных

Track:

  • название
  • описание
  • регион
  • сложность
  • протяженность
  • GPX
  • стартовая точка

Ride:

  • привязка к маршруту
  • дата
  • точка сбора
  • статус

Админка

Сделано ровно то, что нужно:

  • создание маршрутов
  • загрузка GPX
  • добавление фото
  • создание выездов
  • привязка выездов к маршрутам

Без лишнего:

  • ролей
  • лишних настроек
  • перегруженности

Инфраструктура

Сервер:

  • VPS (Debian)

Настроено:

  • SSH только по ключу
  • multiplex (одна сессия, много команд)
  • отключена парольная аутентификация
  • fail2ban и firewall
  • systemd для сервиса
  • nginx как reverse proxy

Что это дало

  • нормальная структура данных
  • быстрый сайт
  • контроль над логикой
  • возможность развивать продукт

Теперь это не блог, а система:

Маршруты -> Выезды -> Люди

Дальше

  • карта маршрутов
  • фильтры
  • Telegram-интеграция
  • развитие базы треков

Проект живой и будет развиваться.