Все проекты
TicketHub
Open Source
web
5 звёзд

TicketHub

Русский форк osTicket из 2014 года — миграция на PHP 8.4 + MySQL 8.0, сверху канбан, REST API, инвентаризация и Docker

В цифрах

0%

Ускорение запросов

0

Индексов добавлено

0

Тестовых классов

0

Уровень PHPStan

Проблема

Что я решала

Оригинальная кодовая база osTicket v1.6 (русская ветка) еле дышала на PHP 7. Современные браузеры ломали верстку на Bootstrap 3, у админки не было API, а простые запросы в дашборде занимали 2-3 секунды — индексов почти не было. Тот, кто хотел хостить тикетинг в 2025 году, сначала воевал с кодом, а уже потом настраивал SMTP.
Мой подход

Как я делала

Перестроила в три захода. Первый: миграция на PHP 8.4 со strict types, замена mysqli на PDO с prepared statements везде, прогон PHPStan на уровне 7 по всему коду. Второй: замена Bootstrap 3 на Tailwind CSS — шаблоны переписывались по одному компоненту, без ломки бэкенд-поведения. Третий: 28 индексов БД по результатам EXPLAIN ANALYZE на реальных запросах, плюс обёртка в Docker для деплоя одной командой. Написала 50+ PHPUnit-классов, покрывающих бизнес-логику, ещё до того как трогать SMTP/POP3/IMAP.

Выбор технологий

  • PHP 8.4Strict types и readonly-классы отловили 40+ багов, которые PHP 7 молча терпел годами.
  • Tailwind CSSЗамена Bootstrap 3 на Tailwind сократила CSS-бандл с 180KB до 22KB и превратила тёмную тему в диф из 10 строк.
  • PHPUnit 10.550+ тестовых классов отрабатывают за 4 секунды на новом API с атрибутами — достаточно быстро для pre-commit-хука.
  • DockerОдин docker compose up поднимает PHP-FPM, MySQL 8.0 и Nginx. Больше никаких "у меня работает".
Результат

Что получилось

Время запросов в дашборде упало с 2-3 секунд до 150-200мс — минус 92.5%. PHPStan уровня 7 чист по всему репозиторию. Полный REST API с Bearer-аутентификацией открыл двери для интеграций (Slack-боты, Zapier). Поставляется как Docker Compose-стек, поднимается меньше чем за 30 секунд. База знаний с полнотекстовым поиском и капчей защищает клиентский портал. Админ получил канбан-доски, календарный вид и трекинг времени — современные фичи, которых в старом коде не было.