- Nginx rate limit: 20 req/min per IP on /api/auth/login and /register - slowapi rate limit: 10/min on login, 5/hour on register (Redis-backed) - Real client IP extracted from X-Forwarded-For for accurate per-IP limiting Authored by: Jack Levy
54 lines
757 B
Plaintext
54 lines
757 B
Plaintext
# Web framework
|
|
fastapi==0.115.5
|
|
uvicorn[standard]==0.32.1
|
|
python-multipart==0.0.18
|
|
|
|
# Database
|
|
sqlalchemy==2.0.36
|
|
asyncpg==0.30.0
|
|
psycopg2-binary==2.9.10
|
|
alembic==1.14.0
|
|
|
|
# Config
|
|
pydantic-settings==2.6.1
|
|
|
|
# Task queue
|
|
celery==5.4.0
|
|
celery-redbeat==2.2.0
|
|
kombu==5.4.2
|
|
|
|
# HTTP clients
|
|
httpx==0.28.1
|
|
requests==2.32.3
|
|
tenacity==9.0.0
|
|
|
|
# LLM providers
|
|
openai==1.57.4
|
|
anthropic==0.40.0
|
|
google-generativeai==0.8.3
|
|
|
|
# Document parsing
|
|
beautifulsoup4==4.12.3
|
|
lxml==5.3.0
|
|
feedparser==6.0.11
|
|
pdfminer.six==20231228
|
|
|
|
# Trends
|
|
pytrends==4.9.2
|
|
|
|
# Redis client (for health check)
|
|
redis==5.2.1
|
|
|
|
# Auth
|
|
python-jose[cryptography]==3.3.0
|
|
passlib[bcrypt]==1.7.4
|
|
bcrypt==4.0.1
|
|
|
|
# Rate limiting
|
|
slowapi==0.1.9
|
|
limits==3.13.0
|
|
|
|
# Utilities
|
|
python-dateutil==2.9.0
|
|
tiktoken==0.8.0
|