📌 Kanban Board — Управление задачами в стиле Agile
Kanban Board — это сервис для организации задач по принципу Kanban (доска с колонками «To Do», «In Progress», «Done»). Позволяет командам эффективно управлять workflow, отслеживать прогресс и оптимизировать процессы. 🏗️ Архитектура проекта
Проект реализован как монолитное приложение с четким разделением слоев:
API Layer: REST-контроллеры для взаимодействия с клиентом
Service Layer: бизнес-логика и валидация
Storage Layer: хранение данных (в памяти или БД)
Model Layer: сущности задач, эпиков, подзадач
⚙️ Технологический стек Технология Назначение Java 17 Основной язык разработки Spring Boot Фреймворк для backend-разработки Maven Управление зависимостями H2 / PostgreSQL База данных (в зависимости от конфигурации) REST API Взаимодействие с клиентом Docker Контейнеризация (опционально) 📡 Основные Endpoint'ы 🔹 Управление задачами
POST /tasks — создать задачу
GET /tasks/{id} — получить задачу по ID
GET /tasks — список всех задач
DELETE /tasks/{id} — удалить задачу
PUT /tasks — обновить задачу
🔹 Управление эпиками (Epic)
POST /epics — создать эпик
GET /epics/{id} — получить эпик по ID
GET /epics — список всех эпиков
DELETE /epics/{id} — удалить эпик
🔹 Управление подзадачами (Subtask)
POST /subtasks — создать подзадачу
GET /subtasks/{id} — получить подзадачу по ID
GET /subtasks — список всех подзадач
DELETE /subtasks/{id} — удалить подзадачу
🔹 История и приоритезация
GET /history — получить историю просмотров задач
GET /prioritized — список задач, отсортированных по приоритету
💡 Ключевая бизнес-логика
✅ Иерархия задач:
Эпик (Epic) — крупная задача, состоящая из подзадач.
Подзадача (Subtask) — часть эпика. Статус эпика автоматически пересчитывается на основе подзадач.
Обычная задача (Task) — независимая единица работы.
✅ Статусы задач:
NEW → IN_PROGRESS → DONE
✅ Автоматическое обновление статусов:
Если все подзадачи эпика завершены (DONE), эпик автоматически помечается как выполненный.
✅ История просмотров:
При запросе задачи через GET /tasks/{id} она добавляется в историю (максимум 10 последних просмотров).
✅ Сортировка по приоритету:
Задачи выводятся в порядке срочности (по дате начала).
🚀 Особенности
Гибкое хранилище: данные можно сохранять в памяти (InMemory) или в БД (PostgreSQL).
Масштабируемость: легко добавить новые типы задач или статусы.
Простота интеграции: REST API позволяет подключать фронтенд или мобильное приложение.
🎯 Цель проекта
Создать интуитивно понятный инструмент для управления задачами, который:
Упрощает трекинг прогресса.
Автоматизирует обновление статусов.
Подходит для небольших Agile-команд.