Простое API для списка задач, разработанное с использованием FastAPI и PostgreSQL в качестве тестового задания для позиции Junior Python Developer. API позволяет пользователям регистрироваться, входить в систему, создавать, просматривать, обновлять и удалять задачи, а также управлять правами доступа (чтение/обновление) для задач. Только владелец задачи может предоставлять или отзывать права.
- Аутентификация пользователей: Регистрация и вход с использованием JWT-токенов.
- Управление задачами: Создание, просмотр, обновление и удаление задач.
- Система прав доступа: Владелец задачи может предоставлять или отзывать права на чтение и обновление для других пользователей.
- База данных: PostgreSQL для хранения данных.
- Архитектура: Чистая, модульная структура с разделением на роутеры, модели и схемы.
- Python 3.11
- FastAPI: Фреймворк для создания API.
- PostgreSQL: База данных для хранения пользователей, задач и прав доступа.
- Tortoise ORM: Для работы с базой данных.
- Pydantic: Для валидации и сериализации данных.
- JWT: Для безопасной аутентификации.
FastAPI-ToDo/
├── app/
│ ├── main.py # Основное приложение FastAPI
│ ├── models.py # Модели Tortoise ORM (User, Task, Permission)
│ ├── schemas.py # Схемы Pydantic для валидации данных
│ ├── core/
│ │ ├── config.py # Настройки (URL базы данных, модули)
│ │ ├── security.py # Логика JWT-аутентификации
│ │ ├── tortoise_orm/ # Конфигурации и утилиты для Tortoise ORM
│ ├── routers/
│ │ ├── auth_router.py # Маршруты API для аутентификации
│ │ ├── task_router.py # Маршруты API для управления задачами
│ │ ├── permission_router.py # Маршруты API для управления правами
├── requirements.txt # Зависимости проекта
└── README.md # Этот файл
- Клонирование репозитория
git clone https://github.com/Dina-Tolkina/ToDo-API.git
- Создать venv
python -m venv venv
- Активация виртуальной среды:
- Для Windows:
venv\Scripts\activate - Для Unix или MacOS:
source venv/bin/activate
- Установка зависимостей:
pip install -r requirements.txt
- Настройка базы данных:
- Создать файл .env
- Указать настройки базы данных в файле .env
SECRET_KEY=123 postgres://user:password@localhost:5432/database_name- Применить миграции:
aerich upgrade - Запуск приложения:
- перейти в папку app
- запустить команду
uvicorn main:app --host 127.0.0.1 --port 8000 --reload
API будет доступно по адресу http://127.0.0.1:8000/