# 🎵 AudiOhm **Alternative à Spotify avec streaming YouTube** Une application web moderne de streaming musical utilisant FastAPI (backend) et HTML/JavaScript (frontend), avec streaming audio depuis YouTube. --- ## 🚀 Démarrage Rapide ### Prérequis - Python 3.13+ - PostgreSQL 14+ - pip et venv ### Installation ```bash # Cloner le repository git clone https://github.com/votre-username/audiOhm.git cd audiOhm # Installer les dépendances backend cd backend python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt # Configurer la base de données cp .env.example .env # Éditer .env avec vos paramètres de base de données # Lancer les migrations alembic upgrade head # Créer un utilisateur admin python -c "from app.db import Session; from app.models.user import User; from app.core.security import hash_password; db = Session(); admin = User(email='admin@example.com', username='admin', password_hash=hash_password('admin123')); db.add(admin); db.commit(); print('Admin créé!')" # Démarrer le serveur uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload ``` ### Accès - **Application**: http://localhost:8000 - **Admin par défaut**: - Email: `admin@example.com` - Password: `admin123` --- ## 📁 Structure du Projet ``` audiOhm/ ├── backend/ # API FastAPI │ ├── app/ │ │ ├── api/ # Routes API │ │ ├── core/ # Configuration, sécurité │ │ ├── models/ # Modèles de base de données │ │ ├── schemas/ # Schémas Pydantic │ │ ├── services/ # Logique métier │ │ └── static/ # Frontend (HTML, CSS, JS) │ ├── alembic/ # Migrations DB │ ├── logs/ # Logs applicatifs │ └── storage/ # Stockage local ├── design-system-v2/ # Documentation design system ├── docs/ # Documentation technique ├── docker/ # Configuration Docker └── builds/ # Builds web ``` --- ## ✨ Fonctionnalités ### 🎧 Player Audio - Lecture, pause, précédent, suivant - Barre de progression cliquable - Contrôle du volume avec mute - Shuffle et repeat - Affichage des métadonnées (titre, artist, pochette) ### 📚 Bibliothèque - **Playlists**: Création, modification, suppression - **Titres likés**: Gestion des favoris - **Historique**: Tracking des écoutes - **Statistiques**: Compteurs d'écoute ### 🔍 Recherche - Recherche YouTube intégrée - Lecture instantanée depuis les résultats - Ajout à la file d'attente ### 📋 Queue de Lecture - File d'attente dynamique - Shuffle - Réorganisation - Persistance locale ### 👤 Comptes - Authentification JWT - Gestion utilisateur - Données persistantes --- ## 🔧 Configuration ### Variables d'Environnement ```bash # .env DATABASE_URL=postgresql://user:password@localhost/audiOhm SECRET_KEY=votre_clé_secrète_ici ALGORITHM=HS256 ACCESS_TOKEN_EXPIRE_MINUTES=30 ``` ### Base de Données ```bash # Lancer les migrations alembic upgrade head # Créer une nouvelle migration alembic revision --autogenerate -m "description" # Downgrade alembic downgrade -1 ``` --- ## 📚 API Endpoints ### Authentification - `POST /api/v1/auth/register` - Inscription - `POST /api/v1/auth/login` - Connexion - `GET /api/v1/auth/me` - Profil utilisateur ### Bibliothèque - `GET /api/v1/library/liked-tracks` - Titres likés - `POST /api/v1/library/liked-tracks/{track_id}` - Lik/unlike - `GET /api/v1/library/history` - Historique d'écoute - `POST /api/v1/library/history` - Ajouter à l'historique - `GET /api/v1/library/stats` - Statistiques ### Playlists - `GET /api/v1/playlists` - Lister les playlists - `POST /api/v1/playlists` - Créer une playlist - `GET /api/v1/playlists/{id}` - Détails playlist - `PUT /api/v1/playlists/{id}` - Modifier playlist - `DELETE /api/v1/playlists/{id}` - Supprimer playlist - `POST /api/v1/playlists/{id}/tracks` - Ajouter des tracks ### Musique - `GET /api/v1/music/trending` - Titres populaires - `GET /api/v1/music/search` - Rechercher - `GET /api/v1/music/youtube/{id}/stream` - Stream YouTube --- ## 🛠️ Développement ### Lancer en Mode Développement ```bash # Backend avec rechargement automatique cd backend uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload # Voir les logs tail -f logs/app.log ``` ### Tests ```bash # Tests unitaires pytest # Tests avec couverture pytest --cov=app tests/ # Tests API pytest tests/api/ ``` ### Logs Les logs sont sauvegardés dans `backend/logs/`: - `app.log` - Logs applicatifs - `error.log` - Erreurs uniquement --- ## 🐛 Dépannage ### Problème: La musique ne joue pas **Vérifier:** 1. Que le serveur backend tourne 2. Que vous avez un token JWT valide (connecté) 3. Les logs du navigateur (F12 → Console) 4. Les logs backend ### Problème: Erreur 500 sur l'historique **Solution:** Les endpoints de bibliothèque utilisent maintenant une construction manuelle des réponses au lieu de `model_validate()`. Vérifiez que vous utilisez la dernière version du code. ### Problème: Fonction JavaScript non définie **Solution:** Toutes les fonctions appelées depuis le HTML sont maintenant assignées à `window`. Vérifiez que le fichier `app.js` a bien été mis à jour. --- ## 📝 Changelog ### Version 1.0.0 (2026-01-19) - ✅ Application web complète - ✅ Player audio avec contrôles complets - ✅ Bibliothèque (playlists, liked, history) - ✅ Recherche YouTube - ✅ Queue de lecture - ✅ Authentification JWT - ✅ API REST complète ### Corrections Récentes - Correction des erreurs 500 sur les endpoints de bibliothèque - Correction des fonctions JavaScript non définies - Amélioration de la gestion des erreurs 401 --- ## 🤝 Contribution Les contributions sont les bienvenues! 1. Fork le projet 2. Créer une branche (`git checkout -b feature/AmazingFeature`) 3. Commit (`git commit -m 'Add AmazingFeature'`) 4. Push (`git push origin feature/AmazingFeature`) 5. Ouvrir une Pull Request --- ## 📄 Licence Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails. --- ## 👥 Auteurs - **Votre Nom** - *Initial work* - [Votre GitHub] --- ## 🙏 Remerciements - FastAPI pour le framework backend excellent - YouTube pour l'API de streaming - La communauté open source --- **Note:** Ce projet est une alternative éducative à Spotify. N'utilisez pas pour violer les droits d'auteur.