Task-Manager - это диспетчер задач, предназначенный для организации и отслеживания рабочих задач. Приложение разработано с использованием фреймворка FastAPI, обеспечивая базовые операции CRUD (создание, чтение, обновление, удаление) для задач и включает обновление в реальном времени информации о задачах и юзерах через WebSocket.
- Возможности
- Структура проекта
- Установка и запуск проекта
- Конечные точки API
- Административная панель
- Доступ к Swagger UI
- Регистрация и аутентификация пользователей.
- Операции CRUD для задач и пользователей(Создание, Чтение, Обновление, Удаление).
- Обновление информации в реальном времени о задачах и пользователях с использованием WebSocket.
- Аутентификация OAuth2 для доступа к API.
- Доступ к админ-панели.
- Фильтрация задач и пользователей.
- Пагинация.
- Кэширование с помощью Redis.
- Лимит запросов от пользователей.
Task-Manager/
├── alembic/
├── app/
│ ├── api/
│ ├── core/
│ ├── db/
│ ├── endpoints/
│ └── schemas/
├── commands
├── docker
│ ├── app.sh
├── .env
├── .gitignore
├── alembic.ini
├── docker-compose.yaml
├── LICENSE
├── main.py
├── poetry.lock
├── pyproject.toml
└── README.md
-
Клонируйте репозиторий:
git clone https://github.com/dazdik/Task-Manager/
-
Перейдите в папку проекта:
cd Task-Manager
-
Создайте виртуальное окружение (рекомендуется):
python3 -m venv venv source venv/bin/activate # On Windows, use venv\Scripts\activate.bat
-
Переименовать шаблон-файл переменных окружения
.env.example
в.env
.Ввести свои настройки в .env (с настройками по-умолчанию не безопасно).
-
Запустите Docker Compose:
docker-compose up --build -d
Примечания:
В контейнере поднимается и БД, redis и само приложение.
Создаётся тестовый суперпользователь admin с паролем admin(можно поменять эти значения).
Создаются 12 тестовых пользователей с ролями менеджер и юзер, а так же 10 тестовых задач.
Приложение готово к работе по адресу http://localhost:8001/
POST /api/auth/#/
- Вход в систему
GET /admin
- админ-панель, права доступа — админ
POST /api/users/create
- Создание пользователяGET /api/users/all
- Получение списка всех пользователейGET /api/users/me
- Получение информации о текущем пользователеGET /api/users/{user_id}
- Получение информации о пользователе по IDDELETE /api/users/{user_id}
- Удаление пользователя по IDPATCH /api/users/{user_id}
- Изменение информации о пользователе по ID
POST /api/tasks/create
- Создание задачиGET /api/tasks/
- Получение списка всех задачGET /api/tasks/{task_id}
- Получение задачи по IDDELETE /api/tasks/{task_id}
- Удаление задачи по IDPATCH /api/tasks/{task_id}
- Обновление информации о задаче по IDGET /api/tasks/test
- Получение тестовых задач
-
ws://localhost:8001/api/tasks/ws/
- Позволяет клиенту установить WebSocket соединение и отправлять/получать уведомления о создании или удалении задачи в системе. -
ws://localhost:8001/api/tasks/ws/{task_id}
- Клиент может подключиться к этому WebSocket, чтобы получать и отправлять данные, связанные с задачей по её идентификатору. Если задача с указанным ID не существует, будет возвращена ошибка 404. -
ws://localhost:8001/api/users/ws/
- WebSocket конечная точка для уведомлений пользователей. Клиенты могут подключаться для получения уведомлений, связанных с их активностями в системе.
Позволяет администраторам просматривать и управлять пользователями и задачами в системе.
Функции административной панели включают:
- Добавление пользователей или задач
- Редактирование информации
- Удаление пользователей/задач
- Поиск
- Экспорт данных
Для доступа к этим функциям необходимы соответствующие права администратора.
После запуска API вы можете получить доступ к Swagger UI по следующему URL:
http://localhost:8001/docs
Используйте Swagger UI для:
- Просмотра конечных точек
- Отправки запросов
- Просмотра ответов
- Тестовые проверки
Для тестирования с помощью Swagger UI выполните следующие действия для каждой конечной точки, описанной выше:
-
Откройте ваш веб-браузер и перейдите по указанному выше пути
/docs
. -
Изучите доступные конечные точки и выберите ту, которую вы хотите протестировать.
-
Нажмите на кнопку "Try it out" для открытия интерактивной формы, где вы можете ввести данные.
-
Заполните необходимые параметры и тело запроса (если применимо) согласно документации API, приведенной выше.
-
Нажмите кнопку "Execute", чтобы отправить запрос на API.
-
Ответ будет отображен ниже, показывая код состояния и данные ответа.
-
Вы также можете просмотреть примеры запросов и ответов, что может быть полезно для понимания ожидаемого формата данных.
- FastAPI - основной фреймворк веб-приложения.
- Docker - для контейнеризации приложения.
- Poetry - для управления зависимостями.
Этот проект лицензирован по лицензии MIT - смотрите файл LICENSE для подробностей.