- ⚡ FastAPI Для API/backend на Python.
- 🧰 SQLAlchemy Для взаимодействия с базой данных (ORM).
- 🔍 Pydantic, используется FastAPI для валидации данных и управления настройками.
- 💾 PostgreSQL в качестве SQL БД.
- 🦄 Uvicorn, Веб-сервер ASGI для Python. (при запуске приложения/сервиса через docker используется gunicorn)
- pip в качестве стандартного пакетного менеджера.
- yapf для автоматического форматирования кода в проекте.
- pytest + pytest-asyncio для тестирования приложения. Плагин pytest-asyncio обеспечивает поддержку coroutines в качестве тестовых функций. Позволяет использовать await внутри тестов.
- 🔒PyJWT для получения JWT-токена для аутентификации.
- Я.Спеллер для валидации текста.
- 🐋Docker Запуск сервиса и требуемой им инфраструктуры проводится в docker контейнерах.
bash команда: git clone https://github.com/Telmann/KODE_test_case.git
выполните: docker compose up --build test
данная команда запустит тесты и после их успешного проведения вы увидите что-то похожее:
выполните: docker compose up --build app
3. Готово! Приложение будет доступно по адресу: http://127.0.0.1:9999/docs#/
- **POST /registration/**: Регистрация. Добавляет нового пользователя в базу данных.
- **POST /token**: Аутентифицирует пользователя и выдает токен доступа JWT. Проверяет указанные имя пользователя и пароль и, если они верны, генерирует JWT-токен доступа.
- **POST /notes**: Создает новую заметку для текущего аутентифицированного пользователя. Проверяет содержимое на наличие ошибок с помощью [Яндекс.Спеллер](https://yandex.ru/dev/speller/doc/ru/concepts/api-overview?ysclid=m0fdi2dd3r506654470) и, если ошибок нет, сохраняет заметку в базе данных.
- **GET /notes**: Получает из базы данных все заметки для текущего аутентифицированного пользователя.
Подробнее
Использовал последнюю версию pytest(8.3.2) и получал [ошибку](pytest-dev/pytest-asyncio#830) на самом первом тесте(при запуске тестов через Docker). В результате пришлось использовать версию 8.2.1



