Документация к проекту "Task Tracker" — backend-приложение на Django + DRF с авторизацией JWT, веб-интерфейсом и автоматической документацией API (Swagger/ReDoc).
- Регистрация и аутентификация пользователей (JWT + сессии Django)
- Создание проектов и управление участниками
- Создание задач с указанием заголовка, описания, приоритета, статуса, дедлайна, автора и исполнителя
- Фильтрация задач по проекту, статусу, приоритету, исполнителю и дате дедлайна (через GET-параметры)
- Разграничение прав доступа:
- Владелец проекта может управлять участниками, редактировать и удалять любые задачи в проекте
- Исполнитель задачи может менять её статус и приоритет
- Автор задачи имеет право редактировать описание и удалять свою задачу (если он не владелец)
- Только участники проекта имеют доступ к его задачам, комментариям
- Комментирование задач
- Пагинация (10 записей на страницу)
- Автоматическая документация API (Swagger UI + ReDoc)
- Python 3 + Django 6.0
- Django REST Framework – API
- djoser + djangorestframework-simplejwt – аутентификация JWT
- django-filter – фильтрация задач
- drf-spectacular – документация OpenAPI 3
- Bootstrap 5 – веб-интерфейс
git clone https://github.com/.../task_tracker.git
cd task_trackerpython -m venv venv
# Windows:
source venv/Scripts/activate
# Linux/MacOS:
source venv/bin/activatepip install -r requirements.txtpython manage.py migratepython manage.py createsuperuserpython manage.py runserverСервер будет доступен по адресу http://127.0.0.1:8000/
| Тип | URL | Описание |
|---|---|---|
| Веб-интерфейс | / |
Главная страница (список проектов пользователя) |
| Админка Django | /admin/ |
Управление проектами, задачами, пользователями |
| API | /api/ |
REST API (проекты, задачи, комментарии) |
| Swagger UI | /api/schema/swagger/ |
Интерактивная документация API |
| ReDoc | /api/schema/redoc/ |
Альтернативная документация |
Доступ к API требует JWT-токена.
POST /api/auth/jwt/create/
Content-Type: application/json
{
"username": "your_username",
"password": "your_password"
}Ответ:
{
"access": "ваш_access_токен",
"refresh": "ваш_refresh_токен"
}В заголовке каждого запроса:
Authorization: Bearer <ваш_access_токен>
POST /api/auth/jwt/refresh/
Content-Type: application/json
{
"refresh": "ваш_refresh_токен"
}| Метод | URL | Описание | Права |
|---|---|---|---|
| GET | /api/projects/ |
Список проектов, где пользователь – участник | Только участники |
| POST | /api/projects/ |
Создать проект | Аутентификация |
| GET | /api/projects/{id}/ |
Детали проекта | Участник |
| PATCH | /api/projects/{id}/ |
Обновить проект | Владелец |
| DELETE | /api/projects/{id}/ |
Удалить проект | Владелец |
| POST | /api/projects/{id}/add_member/ |
Добавить участника | Владелец |
| POST | /api/projects/{id}/remove_member/ |
Удалить участника | Владелец |
| Метод | URL | Описание | Права |
|---|---|---|---|
| GET | /api/tasks/ |
Список задач (с фильтрацией) | Участник проекта |
| POST | /api/tasks/ |
Создать задачу | Аутентификация |
| GET | /api/tasks/{id}/ |
Детали задачи | Участник |
| PATCH | /api/tasks/{id}/ |
Обновить задачу | Владелец/Исполнитель/Автор |
| DELETE | /api/tasks/{id}/ |
Удалить задачу | Владелец/Автор |
Фильтрация:
/api/tasks/?status=NEW&priority=HIGH&assignee=2&project=1&deadline_after=2025-01-01
| Метод | URL | Описание | Права |
|---|---|---|---|
| GET | /api/comments/ |
Комментарии пользователя | Участник |
| POST | /api/comments/ |
Создать комментарий | Участник |
| DELETE | /api/comments/{id}/ |
Удалить комментарий | Владелец проекта |
POST /api/projects/
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Новый проект",
"description": "Описание проекта",
"member_ids": [2, 3]
}POST /api/tasks/
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "Реализовать авторизацию",
"description": "Добавить JWT",
"priority": "HIGH",
"status": "NEW",
"deadline": "2025-12-31T23:59:59Z",
"assignee_id": 2,
"project_id": 1
}task_tracking/
├── api/ # REST API (serializers, viewsets, permissions, urls)
├── tasks/ # Основное приложение (модели, формы, view-функции, шаблоны)
├── templates/ # HTML-шаблоны веб-интерфейса
├── task_tracking/ # Настройки проекта
└── manage.py
| Действие | Кто может |
|---|---|
| Создать проект | любой аутентифицированный |
| Просмотреть проект | участник проекта |
| Изменить/удалить проект | только владелец |
| Добавить/удалить участника | только владелец |
| Создать задачу | участник проекта |
| Просмотреть задачу | участник проекта |
| Изменить статус/приоритет | исполнитель, владелец |
| Изменить описание | автор (если не владелец), владелец |
| Удалить задачу | автор, владелец |
| Создать комментарий | участник проекта |
| Удалить комментарий | владелец проекта |
Интерактивная документация (Swagger UI) доступна после запуска сервера:
- Swagger UI:
http://127.0.0.1:8000/api/schema/swagger/ - ReDoc:
http://127.0.0.1:8000/api/schema/redoc/
- Пользователи и проекты (регистрация, создатели, участники)
- Задачи с полным набором полей (заголовок, описание, приоритет, статус, дедлайн, автор, исполнитель)
- Фильтрация задач по проекту, статусу, приоритету, исполнителю, дате дедлайна
- Права доступа (владелец, исполнитель, автор)
- Комментирование задач
- Пагинация (10 записей)
- Автоматическая документация (Swagger / ReDoc)
- Соблюдение PEP8
- README с инструкцией по запуску
Проект выполнен в рамках учебного задания. Код может быть использован для обучения.
Разработчик: Масалова Яна Дата: апрель 2026 г.