- Описание проекта
- Возможности
- Как запустить проект
- Тестирование
- Планы на будущее
- Почему стоит попробовать?
- Контакты
- Как помочь проекту
- Структура проекта
- Примечания по Docker
- Полезные ссылки
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.
Этот проект лицензирован под Apache License 2.0.
java-task-manager — это не просто менеджер задач, это шаг к освоению современных технологий разработки!
