java-task-manager — это современное веб-приложение для управления задачами, разработанное с использованием Spring Boot. Проект позволяет эффективно организовывать задачи, эпики и подзадачи, отслеживать их статус и историю просмотров. Это учебный проект, созданный для отработки навыков работы с Spring Framework, JPA, Redis, и другими технологиями, а также для реализации полноценного REST API с документацией через Swagger.
Почему я создал этот проект?
- Чтобы изучить разработку RESTful-приложений с использованием Spring Boot.
- Освоить интеграцию с Redis для хранения истории просмотров.
- Практиковать тестирование с JUnit и Mockito.
- Реализовать контейнеризацию с помощью Docker и Docker Compose.
Какую проблему решает?
Проект помогает структурировать рабочие процессы, предоставляя удобный REST API для управления задачами, эпиками и подзадачами. Он подходит как для личного использования, так и для изучения современных подходов к разработке серверных приложений.
Технологии:
- Java 21 — Язык программирования.
- Spring Boot 3.3 — Основа приложения, включая Spring Web, Spring Data JPA.
- Redis 7.2 — Для хранения истории просмотров.
- H2 Database 2.2 — Встроенная база данных для хранения задач, эпиков и подзадач.
- Docker и Docker Compose — Для контейнеризации приложения и зависимостей.
- JUnit 5 и Mockito — Для модульного и интеграционного тестирования.
- MapStruct — Для маппинга между DTO и сущностями.
- Swagger (Springdoc) — Для документации API.
- Lombok — Для упрощения кода.
java-task-manager предоставляет следующие функции:
- Управление задачами, эпиками и подзадачами:
- Создание, обновление, получение и удаление через REST API.
- Поддержка временных меток (
startTime
,endTime
,duration
) и статусов (NEW
,IN_PROGRESS
,DONE
).
- Типы задач:
- Эпики — Крупные задачи, содержащие подзадачи.
- Задачи — Независимые единицы работы.
- Подзадачи — Детализация эпиков, связанные с ними.
- Приоритизация: Получение списков задач, эпиков и подзадач, отсортированных по статусу (
IN_PROGRESS
→NEW
→DONE
) и времени завершения. - История просмотров: Отслеживание последних 10 просмотров задач, эпиков и подзадач (хранится в Redis).
- REST API:
/task
— Управление задачами./epic
— Управление эпиками./subtask
— Управление подзадачами./history
— Получение истории просмотров./prioritized
— Получение приоритетных списков.
- Документация API: Доступна через Swagger UI (
/swagger-ui.html
). - Тестирование: Написаны тесты для контроллеров и сервисов с использованием JUnit и Mockito.
- Контейнеризация: Возможность запуска приложения и Redis в Docker через Docker Compose.
- Java 21 или выше (для локального запуска).
- Docker и Docker Compose (для запуска в контейнерах).
- Maven (для сборки проекта).
- Операционная система: Windows, macOS, Linux.
- Склонируйте репозиторий:
git clone https://github.com/1EVILGUN1/java-task-manager.git
- Перейдите в папку проекта:
cd java-task-manager
- Убедитесь, что Redis запущен локально или в Docker:
docker run -d --name redis -p 6379:6379 redis:7.2
- Соберите проект с помощью Maven:
mvn clean install
- Запустите приложение:
mvn spring-boot:run
- Проверьте работу:
- Откройте браузер и перейдите на
http://localhost:8080/swagger-ui.html
для доступа к документации API. - Используйте эндпоинты, например,
http://localhost:8080/task
для работы с задачами.
- Откройте браузер и перейдите на
- Склонируйте репозиторий (если ещё не сделано):
git clone https://github.com/1EVILGUN1/java-task-manager.git
- Перейдите в папку проекта:
cd java-task-manager
- Запустите приложение и Redis с помощью Docker Compose:
docker-compose up -d --build
- Проверьте работу:
- Перейдите на
http://localhost:8080/swagger-ui.html
для проверки API. - Для остановки:
docker-compose down
- Перейдите на
Проект включает тесты для:
- Контроллеров: Проверка эндпоинтов с использованием
@WebMvcTest
и Mockito для имитации сервисов. - Сервисов: Проверка бизнес-логики с использованием
@SpringBootTest
и Mockito для имитации репозиториев.
Запуск тестов:
mvn test
- Добавить эндпоинт
/tasks/completed
для получения завершенных задач. - Реализовать аутентификацию и авторизацию через Spring Security.
- Добавить поддержку PostgreSQL как альтернативной базы данных.
- Расширить тестовое покрытие, включая интеграционные тесты для работы с Redis.
- Оптимизировать производительность сортировки в методе
/prioritized
. - Добавить CI/CD через GitHub Actions для автоматической сборки и тестирования.
- Мощный стек технологий: Spring Boot, Redis, H2, Docker — всё, что нужно для современного приложения.
- Полноценный REST API: Удобный интерфейс с документацией через Swagger.
- Тестирование: Надежный код с покрытием тестами для контроллеров и сервисов.
- Контейнеризация: Легкий запуск приложения и Redis с помощью Docker Compose.
- Обучение: Отличный пример для изучения Spring Framework и микросервисной архитектуры.
- Email: yasha.golotin@mail.ru
Хотите внести свой вклад? Форкните репозиторий, предложите улучшения через pull request или поделитесь идеями! Возможные направления:
- Расширение функционала API.
- Улучшение тестового покрытия.
- Оптимизация работы с Redis или H2.
- Улучшение
docker-compose.yml
или Dockerfile.
Присоединяйтесь к развитию java-task-manager!
src/main/java/service/task.manager
:controller
— REST-контроллеры для обработки HTTP-запросов.dto
— Объекты передачи данных (DTO) для задач, эпиков и подзадач.exception
— Пользовательские исключения и обработчик ошибок.mapper
— MapStruct-мапперы для преобразования между DTO и сущностями.model
— JPA-сущности (Task
,Epic
,Subtask
) и перечисления.repository
— Spring Data JPA репозитории для работы с базой данных.service
— Интерфейсы и реализации бизнес-логики.
src/test
— Тесты для контроллеров и сервисов (JUnit, Mockito).Dockerfile
— Для сборки образа приложения.docker-compose.yml
— Для запуска приложения и Redis.
- Dockerfile: Настроен для сборки Spring Boot приложения на базе
eclipse-temurin:21-jre-jammy
. - Docker Compose: Автоматически запускает приложение и Redis, связывая их через сеть
task-manager-network
. - Конфигурация: Настройки Redis и H2 задаются через переменные окружения в
docker-compose.yml
илиapplication.properties
.
- Swagger UI — Документация API.
- Spring Boot — Документация фреймворка.
- Redis — Документация по Redis.
- Docker — Руководство по Docker.
- Docker Compose — Документация по Docker Compose.
java-task-manager — это не просто менеджер задач, это шаг к освоению современных технологий разработки! 🚀