# Dépendances du projet ## Backend Python (requirements.txt) ### Web Framework - `fastapi==0.109.0` - Framework web moderne - `uvicorn[standard]==0.27.0` - Serveur ASGI - `python-multipart==0.0.6` - Support formulaires multipart ### Database - `sqlalchemy==2.0.25` - ORM - `psycopg2-binary==2.9.9` - Driver PostgreSQL - `pgvector==0.2.4` - Extension vecteurs PostgreSQL - `alembic==1.13.1` - Migrations de base de données ### Audio Processing - `librosa==0.10.1` - Analyse audio - `soundfile==0.12.1` - Lecture/écriture fichiers audio - `audioread==3.0.1` - Décodage formats audio - `mutagen==1.47.0` - Métadonnées ID3 ### Machine Learning - `essentia-tensorflow` - Classification genre/mood/instruments (installé via Dockerfile) - `numpy==1.24.3` - Calcul numérique - `scipy==1.11.4` - Calcul scientifique ### Configuration & Validation - `pydantic==2.5.3` - Validation de données - `pydantic-settings==2.1.0` - Configuration via env vars - `python-dotenv==1.0.0` - Chargement fichier .env - `email-validator==2.1.0` - Validation emails (requis par Pydantic EmailStr) ### Authentication - `python-jose[cryptography]==3.3.0` - JWT tokens - `passlib[bcrypt]==1.7.4` - Hashing passwords ### Utilities - `aiofiles==23.2.1` - I/O fichiers asynchrones - `httpx==0.26.0` - Client HTTP asynchrone ## Dépendances Système (Dockerfile) ### Requis pour le backend ```bash apt-get install -y \ ffmpeg # Transcodage audio (MP3, etc.) libsndfile1 # Lecture formats audio gcc g++ gfortran # Compilation packages Python libopenblas-dev # Algèbre linéaire optimisée liblapack-dev # Routines algèbre linéaire libfftw3-dev # Transformées de Fourier rapides libavcodec-dev # Codecs audio/vidéo libavformat-dev # Formats conteneurs libavutil-dev # Utilitaires FFmpeg libswresample-dev # Resampling audio libsamplerate0-dev # Conversion taux d'échantillonnage libtag1-dev # Métadonnées audio libchromaprint-dev # Audio fingerprinting ``` ## Frontend (package.json) ### Framework - `next@15.5.6` - Framework React - `react@19.0.0` - Bibliothèque UI - `react-dom@19.0.0` - Rendu React ### State Management & Data Fetching - `@tanstack/react-query@5.62.11` - Gestion état serveur - `axios@1.7.9` - Client HTTP ### UI & Styling - `tailwindcss@3.4.17` - Framework CSS utility-first ### Types - `typescript@5.7.2` - Typage statique - `@types/react@19.0.1` - `@types/node@22.10.1` ## Modèles Essentia (inclus dans le repo) Total: ~28 MB - `discogs-effnet-bs64-1.pb` (18 MB) - Modèle d'embedding - `genre_discogs400-discogs-effnet-1.pb` (2 MB) - Classification genre - `genre_discogs400-discogs-effnet-1.json` (15 KB) - Métadonnées genres - `mtg_jamendo_moodtheme-discogs-effnet-1.pb` (2.6 MB) - Classification mood - `mtg_jamendo_instrument-discogs-effnet-1.pb` (2.6 MB) - Classification instruments - `mtg_jamendo_genre-discogs-effnet-1.pb` (2.7 MB) - Classification genre (alternatif) ## Vérification des dépendances ### Backend ```bash cd backend python check_dependencies.py ``` ### Build Docker ```bash # Backend docker build -t audio-classifier-backend -f backend/Dockerfile . # Frontend docker build -t audio-classifier-frontend -f frontend/Dockerfile . ``` ## Notes de compatibilité - **Python**: 3.9 (requis pour essentia-tensorflow) - **Architecture**: amd64 (meilleure compatibilité Essentia) - **Node.js**: 20+ (pour Next.js 15) - **PostgreSQL**: 16+ avec extension pgvector ## Installation locale ### Backend ```bash cd backend python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt pip install essentia-tensorflow ``` ### Frontend ```bash cd frontend npm install ``` ## Variables d'environnement requises Voir `.env.example` pour la liste complète des variables nécessaires. ### Critiques - `DATABASE_URL` - Connexion PostgreSQL - `ADMIN_EMAIL` - Email admin - `ADMIN_PASSWORD` - Mot de passe admin - `JWT_SECRET_KEY` - Secret pour JWT (générer avec `openssl rand -hex 32`)