Skip to content

KidIsKing/task_tracker_for_github

Repository files navigation

Task Tracker – система управления проектами и задачами

Документация к проекту "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 – веб-интерфейс

Установка и запуск

1. Клонирование репозитория

git clone https://github.com/.../task_tracker.git
cd task_tracker

2. Создание и активация виртуального окружения

python -m venv venv
# Windows:
source venv/Scripts/activate
# Linux/MacOS:
source venv/bin/activate

3. Установка зависимостей

pip install -r requirements.txt

4. Применение миграций

python manage.py migrate

5. Создание суперпользователя (для доступа в админку)

python manage.py createsuperuser

6. Запуск сервера разработки

python 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

Доступ к API требует JWT-токена.

Получение токена

POST /api/auth/jwt/create/
Content-Type: application/json

{
    "username": "your_username",
    "password": "your_password"
}

Ответ:

{
    "access": "ваш_access_токен",
    "refresh": "ваш_refresh_токен"
}

Использование токена

В заголовке каждого запроса:

Authorization: Bearer <ваш_access_токен>

Обновление access-токена

POST /api/auth/jwt/refresh/
Content-Type: application/json

{
    "refresh": "ваш_refresh_токен"
}

Основные эндпоинты API

Проекты

Метод 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}/ Удалить комментарий Владелец проекта

Примеры запросов (Postman)

Создание проекта

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

Права доступа (сводка)

Действие Кто может
Создать проект любой аутентифицированный
Просмотреть проект участник проекта
Изменить/удалить проект только владелец
Добавить/удалить участника только владелец
Создать задачу участник проекта
Просмотреть задачу участник проекта
Изменить статус/приоритет исполнитель, владелец
Изменить описание автор (если не владелец), владелец
Удалить задачу автор, владелец
Создать комментарий участник проекта
Удалить комментарий владелец проекта

Документация API

Интерактивная документация (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 г.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors