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

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


📁 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 - 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

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