2025-10-05 16:13:13 +03:00
2025-10-05 15:55:19 +03:00
2025-09-25 17:54:34 +03:00
2025-10-03 14:47:12 +03:00
2025-10-05 02:09:28 +03:00
2025-10-05 16:13:13 +03:00
2025-10-05 15:15:32 +03:00
2025-10-01 12:24:49 +03:00

sqlalchemy-fastapi-pydentic-pytest

Pet-проект на стеке FastAPI + SQLAlchemy (async) + Pydantic + Pytest.
Реализован CRUD для пользователей, JWT-аутентификация и тесты.


📂 Структура проекта

/
├── server/backend        # Исходный код: endpoints, pydantic, JWT, отправка паролей на почту, permissions, rate-limiting
├── server/frontend       # Странички login, registration, reset-password, main
├── server/database       # База данных, alembic, db_balancer(не настроен, как шаблон)
├── server/testing        # pytests
├── run.py			      # Точка входа, запуск приложения
├── makefile 		      # Точка входа, запуск приложения и утилит
├── requirements.txt      # Зависимости
├── .env                  # Переменные окружения
└── README.md             # Этот файл


⚙️ Требования

  • Python 3.13.3
  • SQLite (по умолчанию)

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

  1. Клонировать репозиторий:
    git clone <URL репозитория>
    cd sqlalchemy-fastapi-pydentic-pytest
    
  2. Создать и активировать виртуальное окружение:
python3 -m venv .venv
source .venv/bin/activate    # Linux / macOS
venv\Scripts\activate       # Windows
  1. Установить зависимости:
pip install -r requirements.txt
  1. Настроить .env файл (пример):
ALLOW_ORIGINS=http://localhost:3000
ALLOW_CREDENTIALS=true
ALLOW_METHODS=GET,POST,PUT,DELETE
ALLOW_HEADERS=*
JWT_SECRET_KEY=your_secret_key
ACCESS_TOKEN_EXPIRE_MINUTES=30
  1. Мигрировать БД:
make migrate_head
  1. Запустить приложение:
python run.py или вне окружения сразу прописать make run
  1. Документация OpenAPI будет доступна по адресу:
	•	Swagger UI → http://localhost:8000/docs
	•	JSON схема → http://localhost:8000/openapi.json

🔐 Аутентификация • Эндпоинт /login принимает application/x-www-form-urlencoded:

username=<email>&password=<пароль>

Возвращает JWT токен:

{
  "access_token": "...",
  "token_type": "bearer"
}

👤 Пользователи (CRUD)
	•	POST /user_create — создать пользователя
	•	GET /get_user_by_email/{email} — получить пользователя по email
	•	GET / — получить всех пользователей
	•	PUT /user_update/{email} — обновить данные пользователя
	•	DELETE /user_delete/{email} — удалить пользователя

🧪 Тестирование

Запуск всех тестов:

make test

Тестируются (В планах):

	•	CRUD операции
	•	Pydantic-схемы
	•	Эндпоинты API
	•	JWT авторизация

TODO

	•	Тестирование edge-cases

📜 Лицензия

Учебный проект.

Description
Изучение sqlalchemy-fastapi-pydentic-pytest на пет-проекте
Readme 315 KiB
Languages
Python 62.4%
JavaScript 18%
CSS 11.4%
HTML 6.1%
Mako 1.2%
Other 0.9%