Проект: TaskFlow — система управления задачами и командной работой
TaskFlow — веб-приложение для командной работы, позволяющее создавать рабочие пространства, доски и задачи, назначать исполнителей, отслеживать прогресс и получать уведомления в реальном времени. Приложение должно состоять из backend-части, реализованной на Java Spring Boot, и обеспечивать все необходимые функции для управления задачами и взаимодействия пользователей.
- Создать backend-систему на Spring Boot, демонстрирующую навыки уровня Java Junior developer.
- Задействовать ключевые Spring-технологии: Spring Boot, Spring Security, JWT, Spring Data JPA, Redis, WebSocket, Async, Feign, Scheduling, Docker.
- Обеспечить стабильную работу сервиса, безопасность и структурированную архитектуру.
- Регистрация нового пользователя.
- Авторизация, получение access и refresh токенов.
- Роли: ROLE_USER, ROLE_ADMIN.
- Просмотр и редактирование профиля.
- Загрузка аватара (хранение в MinIO).
- Создание пространства.
- Добавление и удаление участников.
- Роли участников: OWNER, EDITOR, VIEWER.
- Просмотр доступных рабочих пространств.
- Создание, изменение, удаление досок.
- Привязка доски к рабочему пространству.
- Кэширование данных досок в Redis.
- Создание, редактирование, удаление колонок.
- Изменение порядка колонок (sort order).
- CRUD операций по задачам.
- Назначение исполнителя.
- Установка дедлайна.
- Прикрепление файлов (MinIO).
- Добавление комментариев.
- Ведение истории изменений (event log).
- Отправка уведомлений при создании, изменении или удалении задач.
- Отправка событий при изменении колонок или комментариев.
- Протокол STOMP over WebSocket.
- Запрос к внешнему API (например, генерация аватара).
- Выполнение вызова автоматически при регистрации пользователя.
- @Async: отправка email-уведомлений.
- @Scheduled: ежедневная генерация отчёта по задачам, дедлайнам, просроченным задачам.
API для получения:
- количества задач по статусу,
- количества просроченных задач,
- количества задач у каждого пользователя.
Использовать SpringDoc OpenAPI / Swagger UI.
Обязателен:
- 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 (миграции БД)
- Spring Boot Test
- MockMvc
- Testcontainers (PostgreSQL, Redis)
- Время отклика API < 200 мс.
- WebSocket события должны приходить мгновенно.
Кэшировать:
- доски,
- списки задач,
- данные профиля пользователя.
- Controller layer — REST и WebSocket контроллеры.
- Service layer — бизнес-логика.
- Repository layer — доступ к данным (JPA).
- Integration layer — взаимодействие с API через Feign, интеграция с MinIO.
- Event layer — доменные события и WebSocket уведомления.
(опционально)
- core
- user-service
- workspace-service
- task-service
- websocket-service
- file-service
- integration-service
Допускается выполнение в виде монолита с разделением по пакетам.
- backend — Spring Boot приложение,
- postgres — основная база данных,
- redis — кэш,
- minio — файловое хранилище,
- minio-client/init — создание bucket,
- mailhog (опционально) — тестовая почта.
- multi-stage build (сначала сборка, затем минимальный образ JRE).
docker-compose up --build
Неделя 1–2:
- регистрация, авторизация, JWT,
- пользователи,
- MinIO интеграция,
- Redis подключение.
Неделя 3:
- рабочие пространства,
- доски,
- Feign-интеграция.
Неделя 4:
- задачи, файлы, комментарии,
- кэширование задач.
Неделя 5:
- WebSocket,
- уведомления в реальном времени.
Неделя 6:
- планировщик @Scheduled,
- email-уведомления,
- статистика.
Неделя 7:
- тестирование (MockMvc, Testcontainers),
- документация (Swagger/OpenAPI).
Неделя 8:
- Docker Compose,
- оптимизация,
- рефакторинг и финальная проверка.
Проект считается завершённым, если:
- Все API работают согласно требованиям.
- Авторизация и роли реализованы через JWT.
- WebSocket обновления отправляются клиентам.
- Redis используется как кэш.
- MinIO используется как файловое хранилище.
- Внешний API вызывается через Feign.
- Проект запускается через Docker Compose.
- Swagger содержит все актуальные эндпоинты.
- Есть тесты на основе Testcontainers.