Skip to content

java-task-manager: управление задачами на Java.

Notifications You must be signed in to change notification settings

1EVILGUN1/java-task-manager

Repository files navigation

✅ java-task-manager — Ваш персональный менеджер задач

Task-manager Banner

Java Spring Redis H2 Docker Docker Compose JUnit Mockito


📝 Описание проекта

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_PROGRESSNEWDONE) и времени завершения.
  • История просмотров: Отслеживание последних 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.

Инструкция для локального запуска

  1. Склонируйте репозиторий:
    git clone https://github.com/1EVILGUN1/java-task-manager.git
  2. Перейдите в папку проекта:
    cd java-task-manager
  3. Убедитесь, что Redis запущен локально или в Docker:
    docker run -d --name redis -p 6379:6379 redis:7.2
  4. Соберите проект с помощью Maven:
    mvn clean install
  5. Запустите приложение:
    mvn spring-boot:run
  6. Проверьте работу:
    • Откройте браузер и перейдите на http://localhost:8080/swagger-ui.html для доступа к документации API.
    • Используйте эндпоинты, например, http://localhost:8080/task для работы с задачами.

Инструкция для запуска с Docker Compose

  1. Склонируйте репозиторий (если ещё не сделано):
    git clone https://github.com/1EVILGUN1/java-task-manager.git
  2. Перейдите в папку проекта:
    cd java-task-manager
  3. Запустите приложение и Redis с помощью Docker Compose:
    docker-compose up -d --build
  4. Проверьте работу:
    • Перейдите на 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 и микросервисной архитектуры.

📬 Контакты


🤝 Как помочь проекту

Хотите внести свой вклад? Форкните репозиторий, предложите улучшения через 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.

🐳 Примечания по Docker

  • 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 — это не просто менеджер задач, это шаг к освоению современных технологий разработки! 🚀