разработка

RTrack: Современная платформа управления проектами

Дата публикации

ℹ️

ℹ️ Что covered в этом посте

Путь создания RTrack — платформы управления проектами на базе Rails 8, сейчас в приватной бете. Мы мигрируем с backend на Go, добавляя комплексные функции, такие как отслеживание проблем, управление временем и глубокая интеграция с git.

RTrack: Создание современной платформы управления проектами

RTrack — это комплексная система управления проектами и отслеживания проблем, построенная на Rails 8. Сейчас в приватной бете на https://rtrack.ru, она представляет полную реимплементацию нашего backend на Go с улучшенными функциями и современными инструментами.

Архитектура

ℹ️

🔧 Backend Stack

  • Rails 8.0 — Современный Rails с Propshaft
  • PostgreSQL — Основная база данных с JSONB
  • OpenSearch — Возможности полнотекстового поиска
  • Redis — Кэширование и фоновые задания
  • ActionCable — WebSocket для обновлений в реальном времени
ℹ️

🎨 Admin Interface

  • ActiveAdmin 4.0 — Современная админ-панель
  • Tailwind CSS — Utility-first стилизация
  • Tiptap — Редактор богатого текста
  • Tom-Select — Улучшенные dropdowns

Основные функции

Система управления проблемами

В своём сердце RTrack — мощная система отслеживания проблем с:

Возможности проблем

  • Редактирование богатого контента с хранением JSON Tiptap
  • Иерархические отношения — структура родитель/подзадача
  • Пользовательские рабочие процессы с настраиваемыми переходами состояний
  • Полнотекстовый поиск через интеграцию OpenSearch
  • Расширенная фильтрация по проектам, исполнителям, меткам, этапам
  • Массовые операции для эффективного управления
  • Вложения файлов с хранением S3/MinIO

Отслеживание времени и управление работой

Встроенные возможности отслеживания времени помогают командам оставаться продуктивными:

⏱️ Функции отслеживания времени

Логирование работы

  • Ручной ввод времени с точностью до минуты
  • Функция таймера (планируется)
  • Категоризация оплачиваемое/неоплачиваемое
  • Описания работы и связь с задачами

Аналитика

  • Метрики индивидуальной продуктивности
  • Отслеживание скорости проекта
  • Представления календаря с агрегированными данными
  • Экспорт в CSV/XLSX

Git-интеграция

Одна из самых мощных функций RTrack — глубокая интеграция с Git:

⚠️

🔀 Интеграция с сервисами Git

Синхронизация

Автоматическая синхронизация репозиториев с GitLab и GitHub — webhooks вызывают обновления в реальном времени при изменениях кода.

Связь

Умная связь ветвь-к-проблеме — названия веток вроде feature/PROJECT-123-description автоматически связывают с проблемами.

Извлечение

Извлечение времени работы из сообщений коммитов — разбор времени, потраченного напрямую из коммитов вроде #time 2h30m.

Отслеживание

Отслеживание расхождения веток — мониторинг того, насколько далеко ветки разошлись от своей базовой ветки.

Архитектура API

Мы создали комплексный REST API с 20+ контроллерами, покрывающими все функции:

ℹ️

📡 Покрытие API

Реализованные endpoints:

Основные API

  • Аутентификация (JWT с токенами обновления)
  • Проблемы (CRUD, поиск, массовые операции)
  • Комментарии (упоминания, реакции)
  • Проекты (звёзды, архивирование, токены)
  • Работы (отслеживание времени, статистика)

Расширенные API

  • Файлы (загрузка/выгрузка, интеграция S3)
  • Документы (иерархические, контент Tiptap)
  • Отпуска (рабочий процесс одобрения, баланс)
  • Экспорт (форматы JSON, CSV, XLSX)
  • Git (синхронизация, webhooks, ветки)

Аутентификация и авторизация

ℹ️

🔐 Слой безопасности

  • JWT-аутентификация с вращением токенов обновления
  • Контроль доступа на основе ролей через CanCanCan
  • Мультиарендность на основе компаний — полная изоляция данных
  • Разрешения на уровне проекта с гранулярным контролем доступа
  • Поддержка API-ключей для внешних интеграций

Функции реального времени

RTrack держит команды синхронизированными с обновлениями в реальном времени:

🔴 WebSocket-обновления

  • Обновления проблем в реальном времени через ActionCable
  • Уведомления о комментариях в реальном времени
  • Потоки активности проекта
  • Многоканальные уведомления (email, WebSocket, Telegram)

📊 Отслеживание активности

  • Всесторонние журналы событий
  • История изменений с diffs
  • Временные шкалы активности пользователей
  • Метрики здоровья проекта

Админ-панель

Админ-интерфейс на базе ActiveAdmin предоставляет мощные возможности управления:

ℹ️

⚙️ Возможности админа

Ресурсы админа

  • Управление пользователями — роли, разрешения, ассоциации компаний
  • Администрирование компании — настройки, участники, проекты
  • Надзор за проектом — количество проблем, управление участниками
  • Координация команды — назначения и сотрудничество
  • Отслеживание проблем — фильтры, массовые действия, изменения состояния
  • Надзор за временем — записи работ, одобрения отпусков

Путешествие миграции

Мы мигрируем с backend на Go, поддерживая паритет функций:

Фаза 1 завершена

Основная функциональность — auth, пользователи, компании, проекты, проблемы, комментарии, работы, базовые CRUD-операции.

Фаза 2 завершена

Расширенные функции — полнотекстовый поиск, управление файлами, команды и участники, функция экспорта.

Фаза 3 в процессе

Функции интеграции — git-интеграция, webhooks, внешние API, уведомления в реальном времени.

Фаза 4 запланирована

Аналитика и отчётность — панели мониторинга, отчёты, API аналитики, расширенные функции поиска.

Технические моменты

Паттерн сервисных объектов

Мы поддерживаем чистую архитектуру с сервисными объектами для всей бизнес-логики:

class IssuesFinder < Finders::Base
  def initialize(user, params = {})
    @user = user
    @params = params
    @relation = Issue.accessible_by(@user)
  end

  def call
    with_aggregations
    with_projects_aggregation
    apply_filters
    sort_results
    paginate_results
  end
end

Оптимизации производительности

ℹ️

⚡ Функции производительности

  • Предотвращение запросов N+1 с eager loading
  • Индексы базы данных на часто запрашиваемых столбцах
  • Кэширование Redis для дорогих операций
  • Умная пакетная обработка для фоновых заданий
  • Поддержка пагинации на всех endpoints списка

Текущий статус

🚀 RTrack сегодня

Что работает:

Завершено

  • 20+ контроллеров REST API
  • Система JWT-аутентификации
  • Полнотекстовый поиск через OpenSearch
  • Загрузка файлов с S3/MinIO
  • Git-интеграция (синхронизация GitLab)
  • Отслеживание времени и отчётность
  • Система управления отпусками
  • Обновления WebSocket в реальном времени

В процессе

  • Панели мониторинга расширенной аналитики
  • Поддержка мобильных приложений
  • Дополнительные провайдеры Git
  • Функции автоматизации рабочих процессов
  • Улучшенная отчётность

Сводка технологического стека

ℹ️

🛠️ Полный стек

Backend: Rails 8.0, Ruby 3.3+, PostgreSQL, Redis, OpenSearch

Frontend: ActiveAdmin 4.0, Tailwind CSS, Tiptap, Tom-Select

Интеграции: GitLab, GitHub, Telegram, SMTP, S3/MinIO

Testing: RSpec, Capybara, 1,600+ examples

Infrastructure: Docker, GitLab CI, Sidekiq

Что дальше

RTrack сейчас в приватной бете — мы уточняем платформу на основе ранней обратной связи пользователей. Миграция с нашего backend на Go почти завершена, с основными функциями полностью функциональными и расширенными интеграциями, полируемыми.

⚠️

📋 Приоритеты дорожной карты

  1. Панели мониторинга аналитики — Визуальные идеи в продуктивности команды
  2. Мобильное приложение — Собственные приложения iOS/Android
  3. Автоматизация рабочих процессов — Пользовательские триггеры и действия
  4. Расширенный поиск — Фильтры, сохранённые запросы, оповещения
  5. Оптимизация производительности — Цели ответа API менее 200ms

Создание RTrack было путём переосмысления управления проектами с современными паттернами Rails. Платформа сочетает мощные функции с чистой архитектурой, доказывая, что Rails 8 — отличный выбор для сложных приложений, управляемых данными.

Приватная бета продолжается на https://rtrack.ru. Если вам интересно попробовать, следите за нашим объявлением о публичном запуске.

#rails#project-management#текущая работа#api#gitlab#opensearch#websocket