8000 GitHub - trane7776/trane-hub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

trane7776/trane-hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trane-Hub

Trane-Hub Logo

Описание проекта

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 — алгоритм хеширования паролей

DevOps

  • 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)

Запуск проекта для разработки

  1. Клонировать репозиторий
git clone <репозиторий_проекта>
cd trane-hub
  1. Установить зависимости для фронтенда и бэкенда
cd frontend-trane-hub
npm install

cd ../backend-trane-hub
npm install
  1. Настроить переменные окружения

    • Создать .env файл в директории frontend-trane-hub на основе шаблона
    • Создать .env файл в директории backend-trane-hub
  2. Запустить проект с использованием Docker Compose

docker-compose up -d
  1. Или запустить проект без Docker (для разработки)
# Терминал 1 - запуск бэкенда
cd backend-trane-hub
npm run start:dev

# Терминал 2 - запуск фронтенда
cd frontend-trane-hub
npm run dev

Процесс деплоя и CI/CD

CI/CD пайплайн на Jenkins

Проект использует Jenkins для автоматизации сборки, тестирования и развертывания. Пайплайн включает следующие этапы:

  1. Клонирование репозитория — загрузка актуальной версии кода из GitHub
  2. Анализ кода:
    • SonarQube — статический анализ кода и контроль качества
    • Quality Gates — проверка соответствия кодовой базы установленным стандартам качества
  3. Установка зависимостей — установка npm-пакетов для фронтенда и бэкенда
  4. Проверки безопасности:
    • OWASP Dependency Check — сканирование зависимостей на наличие уязвимостей
    • Trivy — проверка исходного кода и контейнеров на уязвимости
  5. Сборка Docker-образов — создание образов для фронтенда и бэкенда через Docker Compose
  6. Интеграционное тестирование — проверка корректной работы компонентов системы
  7. Сохранение отчетов — архивирование результатов сканирований и тестов для последующего анализа
  8. Деплой в целевое окружение — развертывание приложения в тестовое или продакшен-окружение

Используемые инструменты:

  • 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 — конфигурация для локальной разработки и тестирования

Развертывание в продакшен

Для продакшен-окружения используется следующий процесс:

  1. Jenkins собирает код из ветки main
  2. Создаются и публикуются Docker-образы с тегом релизной версии
  3. Обновляется конфигурация развертывания для Kubernetes или Docker Swarm
  4. Запускается процесс обновления с использованием стратегии Rolling Update
  5. Проводится проверка здоровья новых экземпляров
  6. По завершении обновления, старые экземпляры удаляются

Мониторинг и логирование

В рамках 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

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0