# 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. Клонировать репозиторий: ```bash git clone cd sqlalchemy-fastapi-pydentic-pytest ``` 2. Создать и активировать виртуальное окружение: ``` python3 -m venv .venv source .venv/bin/activate # Linux / macOS venv\Scripts\activate # Windows ``` 3. Установить зависимости: ``` pip install -r requirements.txt ``` 4. Настроить .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 ``` 5. Мигрировать БД: ``` make migrate_head ``` 6. Запустить приложение: ``` python run.py или вне окружения сразу прописать make run ``` 7. Документация OpenAPI будет доступна по адресу: ``` • Swagger UI → http://localhost:8000/docs • JSON схема → http://localhost:8000/openapi.json ``` ⸻ 🔐 Аутентификация • Эндпоинт /login принимает application/x-www-form-urlencoded: ``` username=&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 авторизация • Тестирование ``` ⸻ 📜 Лицензия Учебный проект.