Home - oyboy/Jora GitHub Wiki

Документация по проекту "Система управления проектами"

Установка и настройка

Для запуска приложения потребуется DockerCompose: установка DockerCompose

За более подробной информацией обращайтесь к Readme.md


Архитектура системы

Общая схема

Система состоит из четырех основных компонентов:

  • Бэкенд на базе Java Spring MVC, который управляет бизнес-логикой и взаимодействием с базами данных.
  • Реляционная (MySQL) и нереляционная (MongoDB) базы данных для хранения информации о сущностях
  • Redis для кэширования данных и управления сессиями пользователей.
  • Фронтенд, созданный с использованием Bootstrap для адаптивного интерфейса пользователя.

Структура базы данных

MySQL

  • User: хранит информацию о пользователях
  • Project: содержит проекты, созданные пользователями
  • Task: включает задачи, связанные с проектами
    • UserTask: связь пользователей с задачей. У одной задачи может быть как один пользователь, так и несколько
  • Tag: хранит название тега, связанным с задачей или пользователем
    • TaskTags: связь тега с задачей
    • UserTags: связь тега с пользователем
    • ProjectTags: в каждом проекте набор тегов для одного того же пользователя или задач отличается, поэтому нужно дополнительная связь с проектом
  • Comment: содержит комментарии к задачам
    • UserCommentdto: такая сущность необходима для:
      • прочтения комментария
      • показа пользователей, прочитавших комментарий
      • показа наличия непрочитанных комментариев для остальных пользователей
  • UserProjectRole: хранит роль пользователя для всех проектов, в которых тот состоит
  • UserAvatar: аватары пользователей
  • Notification: содержит персональные и массовые рассылки
    • ProjectNotification: запись о массовой рассылке в пределах проекта
    • UserNotification: запись о персональном уведомлении

Схема

image

MongoDb

  • Discussion: комментарии к проекту
  • fs.chunks и fs.files: содержат файловые вложения к комментариям

Redis

  • user::user_id - кэшируемая информация о пользователе

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

  1. Регистрация и авторизация пользователей
  2. Создание и удаление проектов
  3. Управление группой пользователей в проекте: бан пользователей, изменение их привелегий
  4. Создание, редактирование и удаление задач
  5. Комментирование задач и проектов
  6. Рассылка массовых и персональных уведомлений пользователям
  7. Редактирование информации о пользователе: автар, никнейм, почта, пароль

Тестирование

Нагрузочные тесты

С помощью postman проведены тесты на нагрузку. Результаты показали, что приложение стабильно функционирует в 99.96% случаях при одновременной отправке запросов от 100 пользователей.

Безопасность

Проведение тестов на наличие SQL-уязвимостей с использованием Burp Suite и sqlmap. В настоящее время уязвимости не выявлены


Аналитика

Информация о действиях пользователей, записываемая в логи, и их визуализация. Всё это реализовано в отдельном микросервисе (см. репозиторий JoraLoger)