- Documentation archivée et réorganisée - Backend: Ajout tests, migrations, library service, rate limiting - Frontend: Suppression Flutter, focus sur interface web HTML/JS - Tailwind CSS ajouté pour le style - Améliorations UX et corrections bugs Generated with [Claude Code](https://claude.com/claude-code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
6.5 KiB
🎵 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
# 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
- Email:
📁 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
# .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
# 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- InscriptionPOST /api/v1/auth/login- ConnexionGET /api/v1/auth/me- Profil utilisateur
Bibliothèque
GET /api/v1/library/liked-tracks- Titres likésPOST /api/v1/library/liked-tracks/{track_id}- Lik/unlikeGET /api/v1/library/history- Historique d'écoutePOST /api/v1/library/history- Ajouter à l'historiqueGET /api/v1/library/stats- Statistiques
Playlists
GET /api/v1/playlists- Lister les playlistsPOST /api/v1/playlists- Créer une playlistGET /api/v1/playlists/{id}- Détails playlistPUT /api/v1/playlists/{id}- Modifier playlistDELETE /api/v1/playlists/{id}- Supprimer playlistPOST /api/v1/playlists/{id}/tracks- Ajouter des tracks
Musique
GET /api/v1/music/trending- Titres populairesGET /api/v1/music/search- RechercherGET /api/v1/music/youtube/{id}/stream- Stream YouTube
🛠️ Développement
Lancer en Mode Développement
# 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
# 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 applicatifserror.log- Erreurs uniquement
🐛 Dépannage
Problème: La musique ne joue pas
Vérifier:
- Que le serveur backend tourne
- Que vous avez un token JWT valide (connecté)
- Les logs du navigateur (F12 → Console)
- 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!
- Fork le projet
- Créer une branche (
git checkout -b feature/AmazingFeature) - Commit (
git commit -m 'Add AmazingFeature') - Push (
git push origin feature/AmazingFeature) - 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.