https://github.com/logaka/taskmanager
Task Management System
https://github.com/logaka/taskmanager
docker docker-compose hibernate java mapstruct spring spring-boot spring-security
Last synced: 3 months ago
JSON representation
Task Management System
- Host: GitHub
- URL: https://github.com/logaka/taskmanager
- Owner: Logaka
- Created: 2025-05-31T11:05:46.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-06-01T18:05:12.000Z (about 1 year ago)
- Last Synced: 2025-06-15T15:25:09.258Z (about 1 year ago)
- Topics: docker, docker-compose, hibernate, java, mapstruct, spring, spring-boot, spring-security
- Language: Java
- Homepage:
- Size: 32.2 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Task Manager
## Описание
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
---
## Быстрый старт
### 1. Клонирование репозитория
```bash
git clone
cd taskManager
```
### 2. Настройка переменных окружения
Создайте файл `.env` в корне проекта и укажите:
```
POSTGRES_USER=your_db_user
POSTGRES_PASSWORD=your_db_password
POSTGRES_DB=your_db_name
HOST=localhost
JWT_SECRET=your_jwt_secret
```
### 3. Запуск через Docker Compose
```bash
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`)
---
## Модели данных
### User (Person)
- `id`: Long
- `username`: String
- `password`: String (hash)
- `roles`: Set
- `createdTasks`: List
- `assignedTasks`: List
### Task
- `id`: Long
- `title`: String
- `description`: String
- `status`: [TODO, IN_PROGRESS, DONE]
- `createdAt`: LocalDateTime
- `updatedAt`: LocalDateTime
- `admin`: User
- `executor`: User
---
## Конфигурация
- Все параметры (БД, JWT) берутся из `.env` или `application.yaml`
- JWT:
- `security.jwt.secret` — секрет для подписи токенов
- `security.jwt.access` — срок жизни access-токена (часы)
- `security.jwt.refresh` — срок жизни refresh-токена (дни)
---
## Тестирование
Для запуска тестов:
```bash
./mvnw test
```
---