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: такая сущность необходима для:
- прочтения комментария
- показа пользователей, прочитавших комментарий
- показа наличия непрочитанных комментариев для остальных пользователей
- UserCommentdto: такая сущность необходима для:
- UserProjectRole: хранит роль пользователя для всех проектов, в которых тот состоит
- UserAvatar: аватары пользователей
- Notification: содержит персональные и массовые рассылки
- ProjectNotification: запись о массовой рассылке в пределах проекта
- UserNotification: запись о персональном уведомлении
Схема
MongoDb
- Discussion: комментарии к проекту
- fs.chunks и fs.files: содержат файловые вложения к комментариям
Redis
- user::user_id - кэшируемая информация о пользователе
Основные функции
- Регистрация и авторизация пользователей
- Создание и удаление проектов
- Управление группой пользователей в проекте: бан пользователей, изменение их привелегий
- Создание, редактирование и удаление задач
- Комментирование задач и проектов
- Рассылка массовых и персональных уведомлений пользователям
- Редактирование информации о пользователе: автар, никнейм, почта, пароль
Тестирование
Нагрузочные тесты
С помощью postman проведены тесты на нагрузку. Результаты показали, что приложение стабильно функционирует в 99.96% случаях при одновременной отправке запросов от 100 пользователей.
Безопасность
Проведение тестов на наличие SQL-уязвимостей с использованием Burp Suite и sqlmap. В настоящее время уязвимости не выявлены
Аналитика
Информация о действиях пользователей, записываемая в логи, и их визуализация. Всё это реализовано в отдельном микросервисе (см. репозиторий JoraLoger)