Trane-Hub — это современная платформа для просмотра и управления коллекцией фильмов с возможностью администрирования контента, управления пользователями и проведения платежных операций. Платформа предоставляет удобный интерфейс для пользователей и расширенные функции управления для администраторов.
- Next.js 14 — React-фреймворк с серверным рендерингом и маршрутизацией
- TypeScript — статическая типизация для повышения надежности кода
- Tailwind CSS — утилитарный CSS-фреймворк для стилизации
- Tanstack Query — библиотека для управления состоянием и кэширования данных
- React Hook Form — библиотека для работы с формами
- Recharts — библиотека для создания диаграмм и графиков
- Draft.js — Rich Text редактор
- SCSS/Sass — препроцессор CSS для более удобной стилизации
- Axios — HTTP-клиент для API-запросов
- NestJS — прогрессивный Node.js-фреймворк для создания эффективных серверных приложений
- TypeScript — для типизации и повышения качества кода
- Prisma — ORM для работы с базой данных
- PostgreSQL — реляционная СУБД
- JWT — JSON Web Tokens для аутентификации и авторизации
- Argon2 — алгоритм хеширования паролей
- Docker — контейнеризация приложения
- Docker Compose — оркестрация контейнеров для локальной разработки
- Jenkins — CI/CD автоматизация процессов сборки и деплоя
- Nginx — веб-сервер и обратный прокси
- Prometheus — система мониторинга и сбора метрик
- Grafana — платформа визуализации метрик и аналитики
- Просмотр каталога фильмов
- Поиск фильмов по жанрам, актерам и другим критериям
- Просмотр информации о фильмах, актерах и жанрах
- Оценка фильмов и оставление отзывов
- Личный кабинет пользователя
- Избранные фильмы
- Платежные операции
- Управление контентом (добавление, редактирование, удаление фильмов, актеров, жанров)
- Управление пользователями
- Доступ к статистике и аналитике
- Мониторинг продаж и просмотров
- Модерация отзывов
Проект построен по модульной архитектуре:
- Фронтенд — изолированный Next.js-проект с использованием App Router
- Бэкенд — модульная NestJS-структура с разделением на сервисы
- База данных — PostgreSQL, управляемая через Prisma ORM
- Инфраструктура — контейнеризованные сервисы с Docker
- Node.js 18+
- Docker и Docker Compose
- PostgreSQL (может быть запущен через Docker)
- Клонировать репозиторий
git clone <репозиторий_проекта>
cd trane-hub
- Установить зависимости для фронтенда и бэкенда
cd frontend-trane-hub
npm install
cd ../backend-trane-hub
npm install
-
Настроить переменные окружения
- Создать
.env
файл в директории frontend-trane-hub на основе шаблона - Создать
.env
файл в директории backend-trane-hub
- Создать
-
Запустить проект с использованием Docker Compose
docker-compose up -d
- Или запустить проект без Docker (для разработки)
# Терминал 1 - запуск бэкенда
cd backend-trane-hub
npm run start:dev
# Терминал 2 - запуск фронтенда
cd frontend-trane-hub
npm run dev
Проект использует Jenkins для автоматизации сборки, тестирования и развертывания. Пайплайн включает следующие этапы:
- Клонирование репозитория — загрузка актуальной версии кода из GitHub
- Анализ кода:
- SonarQube — статический анализ кода и контроль качества
- Quality Gates — проверка соответствия кодовой базы установленным стандартам качества
- Установка зависимостей — установка npm-пакетов для фронтенда и бэкенда
- Проверки безопасности:
- OWASP Dependency Check — сканирование зависимостей на наличие уязвимостей
- Trivy — проверка исходного кода и контейнеров на уязвимости
- Сборка Docker-образов — создание образов для фронтенда и бэкенда через Docker Compose
- Интеграционное тестирование — проверка корректной работы компонентов системы
- Сохранение отчетов — архивирование результатов сканирований и тестов для последующего анализа
- Деплой в целевое окружение — развертывание приложения в тестовое или продакшен-окружение
Используемые инструменты:
- Jenkins — основная платформа CI/CD
- SonarQube — платформа для непрерывного контроля качества кода
- JDK 17 — Java Development Kit для запуска инструментов анализа
- Node 23 — окружение для сборки и тестирования JavaScript приложений
- OWASP Dependency Check — инструмент для выявления публично раскрытых уязвимостей в зависимостях проекта
- Trivy — сканер уязвимостей для контейнеров и файловых систем
- Docker & Docker Compose — инструменты для контейнеризации и оркестрации
Конфигурация пайплайна определена в Jenkinsfile
в корне проекта.
Каждая часть приложения (фронтенд, бэкенд) контейнеризована:
- frontend-trane-hub/Dockerfile — сборка и запуск фронтенда на Next.js
- backend-trane-hub/Dockerfile — сборка и запуск бэкенда на NestJS
- docker-compose.yml — конфигурация для локальной разработки и тестирования
Для продакшен-окружения используется следующий процесс:
- Jenkins собирает код из ветки
main
- Создаются и публикуются Docker-образы с тегом релизной версии
- Обновляется конфигурация развертывания для Kubernetes или Docker Swarm
- Запускается процесс обновления с использованием стратегии Rolling Update
- Проводится проверка здоровья новых экземпляров
- По завершении обновления, старые экземпляры удаляются
В рамках DevOps-практик проект использует:
-
Prometheus — для сбора метрик и мониторинга производительности
- Метрики API-запросов и ответов
- Производительность базы данных
- Нагрузка на серверы
- Бизнес-метрики (количество пользователей, просмотров и т.д.)
-
Grafana — для визуализации метрик и создания дашбордов
- Дашборд общего состояния системы
- Панель мониторинга ошибок
- Производительность API
- Аналитика пользовательского взаимодействия
-
Настроенные алерты — для оповещения команды при проблемах
- Уведомления в мессенджеры (Slack, Telegram)
- Email-оповещения для критических ошибок
trane-hub/
├── frontend-trane-hub/ # Frontend на Next.js
├── backend-trane-hub/ # Backend на NestJS
├── docker-compose.yml # Конфигурация Docker Compose
├── Jenkinsfile # CI/CD пайплайн
├── nginx.conf # Конфигурация Nginx
└── README.md # Документация проекта
MIT