Files
root 801e6a050b prod: UI Optimisée mise en production
- 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>
2026-01-20 09:56:39 +00:00

270 lines
6.5 KiB
Markdown

# 🎵 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.