# Realtime Socket.IO server running on ASGI (uvicorn). python-socketio>=5.11 python-engineio>=4.9 uvicorn>=0.30 # Persistence layer (history + TOTP auth). SQLAlchemy[asyncio]>=2.0 aiosqlite>=0.20 # dev / default DATABASE_URL asyncpg>=0.29 # production (PostgreSQL) pyotp>=2.9 # TOTP login cryptography>=42 # Fernet encryption for Player.totp_secret at rest user-agents>=2.2 # parse User-Agent for /track (self-hosted analytics) geoip2>=4.8 # resolve IP -> country from a local .mmdb file (no external calls) # NOTE: the legacy Flask/Jinja HTTP UI (api/routes.py, api/forms.py, # api/templates/) is dormant and its dependencies (Flask, Flask-WTF, etc.) # were removed during the ASGI migration. Re-add them only if that UI is revived.