Skip to content

TaskFlowOrganization/TaskFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

ТЕХНИЧЕСКОЕ ЗАДАНИЕ (ТЗ)

Проект: TaskFlow — система управления задачами и командной работой

1. Общая информация

TaskFlow — веб-приложение для командной работы, позволяющее создавать рабочие пространства, доски и задачи, назначать исполнителей, отслеживать прогресс и получать уведомления в реальном времени. Приложение должно состоять из backend-части, реализованной на Java Spring Boot, и обеспечивать все необходимые функции для управления задачами и взаимодействия пользователей.

2. Цели проекта

  1. Создать backend-систему на Spring Boot, демонстрирующую навыки уровня Java Junior developer.
  2. Задействовать ключевые Spring-технологии: Spring Boot, Spring Security, JWT, Spring Data JPA, Redis, WebSocket, Async, Feign, Scheduling, Docker.
  3. Обеспечить стабильную работу сервиса, безопасность и структурированную архитектуру.

3. Функциональные требования

3.1. Пользователи

  • Регистрация нового пользователя.
  • Авторизация, получение access и refresh токенов.
  • Роли: ROLE_USER, ROLE_ADMIN.
  • Просмотр и редактирование профиля.
  • Загрузка аватара (хранение в MinIO).

3.2. Рабочие пространства (Workspaces)

  • Создание пространства.
  • Добавление и удаление участников.
  • Роли участников: OWNER, EDITOR, VIEWER.
  • Просмотр доступных рабочих пространств.

3.3. Доски (Boards)

  • Создание, изменение, удаление досок.
  • Привязка доски к рабочему пространству.
  • Кэширование данных досок в Redis.

3.4. Колонки (Columns)

  • Создание, редактирование, удаление колонок.
  • Изменение порядка колонок (sort order).

3.5. Задачи (Tasks)

  • CRUD операций по задачам.
  • Назначение исполнителя.
  • Установка дедлайна.
  • Прикрепление файлов (MinIO).
  • Добавление комментариев.
  • Ведение истории изменений (event log).

3.6. Уведомления в реальном времени (WebSocket)

  • Отправка уведомлений при создании, изменении или удалении задач.
  • Отправка событий при изменении колонок или комментариев.
  • Протокол STOMP over WebSocket.

3.7. Интеграция через OpenFeign

  • Запрос к внешнему API (например, генерация аватара).
  • Выполнение вызова автоматически при регистрации пользователя.

3.8. Асинхронная обработка и планировщик

  • @Async: отправка email-уведомлений.
  • @Scheduled: ежедневная генерация отчёта по задачам, дедлайнам, просроченным задачам.

3.9. Статистика

API для получения:

  • количества задач по статусу,
  • количества просроченных задач,
  • количества задач у каждого пользователя.

3.10. Документация API

Использовать SpringDoc OpenAPI / Swagger UI.

4. Нефункциональные требования

4.1. Технологический стек

Обязателен:

  • Java 17+
  • Spring Boot 3.x
  • Spring Security + JWT
  • Spring Data JPA (PostgreSQL)
  • Spring Data Redis
  • Spring WebSocket
  • Spring Validation
  • Spring Cloud OpenFeign
  • Spring Scheduling
  • SpringDoc OpenAPI
  • MinIO (для файлов)
  • Docker и Docker Compose
  • Flyway (миграции БД)

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

  • Spring Boot Test
  • MockMvc
  • Testcontainers (PostgreSQL, Redis)

4.3. Производительность

  • Время отклика API < 200 мс.
  • WebSocket события должны приходить мгновенно.

4.4. Кэширование

Кэшировать:

  • доски,
  • списки задач,
  • данные профиля пользователя.

5. Архитектура

5.1. Уровни приложения

  • Controller layer — REST и WebSocket контроллеры.
  • Service layer — бизнес-логика.
  • Repository layer — доступ к данным (JPA).
  • Integration layer — взаимодействие с API через Feign, интеграция с MinIO.
  • Event layer — доменные события и WebSocket уведомления.

5.2. Возможная модульность

(опционально)

  • core
  • user-service
  • workspace-service
  • task-service
  • websocket-service
  • file-service
  • integration-service

Допускается выполнение в виде монолита с разделением по пакетам.

6. Развёртывание

6.1. Docker Compose должен поднимать:

  1. backend — Spring Boot приложение,
  2. postgres — основная база данных,
  3. redis — кэш,
  4. minio — файловое хранилище,
  5. minio-client/init — создание bucket,
  6. mailhog (опционально) — тестовая почта.

6.2. Backend должен иметь Dockerfile:

  • multi-stage build (сначала сборка, затем минимальный образ JRE).

6.3. Запуск:

docker-compose up --build

7. График разработки (2 человека, 8 недель)

Неделя 1–2:

  • регистрация, авторизация, JWT,
  • пользователи,
  • MinIO интеграция,
  • Redis подключение.

Неделя 3:

  • рабочие пространства,
  • доски,
  • Feign-интеграция.

Неделя 4:

  • задачи, файлы, комментарии,
  • кэширование задач.

Неделя 5:

  • WebSocket,
  • уведомления в реальном времени.

Неделя 6:

  • планировщик @Scheduled,
  • email-уведомления,
  • статистика.

Неделя 7:

  • тестирование (MockMvc, Testcontainers),
  • документация (Swagger/OpenAPI).

Неделя 8:

  • Docker Compose,
  • оптимизация,
  • рефакторинг и финальная проверка.

8. Условия приёмки работы

Проект считается завершённым, если:

  1. Все API работают согласно требованиям.
  2. Авторизация и роли реализованы через JWT.
  3. WebSocket обновления отправляются клиентам.
  4. Redis используется как кэш.
  5. MinIO используется как файловое хранилище.
  6. Внешний API вызывается через Feign.
  7. Проект запускается через Docker Compose.
  8. Swagger содержит все актуальные эндпоинты.
  9. Есть тесты на основе Testcontainers.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors