Backend: - Nouveau module auth.py avec JWT et password handling - Endpoint /api/auth/login (public) - Endpoint /api/auth/me (protégé) - TOUS les endpoints API protégés par require_auth - Variables env: ADMIN_EMAIL, ADMIN_PASSWORD, JWT_SECRET_KEY - Dependencies: python-jose, passlib Frontend: - Page de login (/login) - AuthGuard component pour redirection automatique - Axios interceptor: ajoute JWT token à chaque requête - Gestion erreur 401: redirect automatique vers /login - Bouton logout dans header - Token stocké dans localStorage Configuration: - .env.example mis à jour avec variables auth - Credentials admin configurables via env Sécurité: - Aucun endpoint public (sauf /api/auth/login et /health) - JWT expiration configurable (24h par défaut) - Password en clair dans env (à améliorer avec hash en prod) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
37 lines
685 B
Plaintext
37 lines
685 B
Plaintext
# Web Framework
|
|
fastapi==0.109.0
|
|
uvicorn[standard]==0.27.0
|
|
python-multipart==0.0.6
|
|
|
|
# Database
|
|
sqlalchemy==2.0.25
|
|
psycopg2-binary==2.9.9
|
|
pgvector==0.2.4
|
|
alembic==1.13.1
|
|
|
|
# Audio Processing
|
|
librosa==0.10.1
|
|
soundfile==0.12.1
|
|
audioread==3.0.1
|
|
mutagen==1.47.0
|
|
|
|
# Essentia for genre/mood/instrument classification
|
|
# Note: Essentia is installed separately in Dockerfile from official wheels
|
|
|
|
# Scientific Computing (versions compatible with Python 3.9)
|
|
numpy==1.24.3
|
|
scipy==1.11.4
|
|
|
|
# Configuration & Validation
|
|
pydantic==2.5.3
|
|
pydantic-settings==2.1.0
|
|
python-dotenv==1.0.0
|
|
|
|
# Authentication
|
|
python-jose[cryptography]==3.3.0
|
|
passlib[bcrypt]==1.7.4
|
|
|
|
# Utilities
|
|
aiofiles==23.2.1
|
|
httpx==0.26.0
|