Task Manager — это REST API сервис для управления задачами с поддержкой регистрации, аутентификации пользователей (JWT, access/refresh flow) и CRUD-операций над задачами.
Проект реализован на Java 21 с использованием Spring Boot 3, Spring Security, JPA (Hibernate), PostgreSQL.
- Регистрация и аутентификация пользователей
- Аутентификация через JWT (access/refresh токены)
- Защита приватных маршрутов (только для авторизованных пользователей)
- CRUD-операции над задачами
- Фильтрация задач по статусу (todo, in_progress, done)
- Роли пользователей (user, admin)
- Докеризация приложения и базы данных
- Java 21
- Spring Boot 3
- Spring Security
- Spring Data JPA (Hibernate)
- PostgreSQL
- JWT (JSON Web Tokens)
- MapStruct
- Docker, Docker Compose
git clone <repo-url>
cd taskManagerСоздайте файл .env в корне проекта и укажите:
POSTGRES_USER=your_db_user
POSTGRES_PASSWORD=your_db_password
POSTGRES_DB=your_db_name
HOST=localhost
JWT_SECRET=your_jwt_secret
docker-compose up --build- Приложение будет доступно на
http://localhost:8080 - База данных — на порту
5432
POST /api/auth/register— регистрация пользователяPOST /api/auth/login— вход, получение access/refresh токеновPOST /api/auth/refresh— обновление access/refresh токенов
GET /api/persons/{id}— получить пользователя (только владелец или админ)PUT /api/persons— обновить пользователяDELETE /api/persons/{id}— удалить пользователя
POST /api/tasks/create— создать задачуGET /api/tasks/{id}— получить задачу (только владелец/исполнитель)PUT /api/tasks— обновить задачуDELETE /api/tasks/{id}— удалить задачу
GET /api/persons/{id}/tasks— получить задачи пользователя
(фильтрация по статусу может быть добавлена через query-параметр, например:?status=TODO)
id: Longusername: Stringpassword: String (hash)roles: SetcreatedTasks: ListassignedTasks: List
id: Longtitle: Stringdescription: Stringstatus: [TODO, IN_PROGRESS, DONE]createdAt: LocalDateTimeupdatedAt: LocalDateTimeadmin: Userexecutor: User
- Все параметры (БД, JWT) берутся из
.envилиapplication.yaml - JWT:
security.jwt.secret— секрет для подписи токеновsecurity.jwt.access— срок жизни access-токена (часы)security.jwt.refresh— срок жизни refresh-токена (дни)
Для запуска тестов:
./mvnw test