NewTube/README.md

127 lines
4.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NewTube — Agrégateur multiplateformes (Angular) 🌐
NewTube est un agrégateur de vidéos multi-plateformes, conçu pour une expérience unifiée et personnalisable. 🚀
### Objectifs Principaux 🎯
- Fournir une recherche et des tendances unifiées sans changer d'onglet. 🔍
- Gérer les clés API et configurations pour éviter les erreurs. 🔒
- Offrir une UX fluide avec thèmes, recherche avancée et gestion des préférences. 🎨
### Providers Supportés 📹
- YouTube 🔴
- Dailymotion 🔵
- Twitch 🟣
- PeerTube (instances configurables) 🟢
- Odysee 🟡
- Rumble 🟠
### Nouveautés Récentes ✨
- Barre de recherche sur la page 'Liked videos' avec filtrage côté serveur. :search:
- Améliorations de l'affichage des badges fournisseurs dans le header. 🏷
## Stack Technique et Patterns 🛠
### Technologies Utilisées 💻
- **Framework**: Angular 20 avec composants standalone et mode strict. :angular:
- **Réactivité**: Signals pour une gestion détat réactive. 📶
- **HTTP & Observables**: RxJS pour les appels asynchrones. 🚀
- **Styling**: Tailwind CSS via CDN pour un design rapide et réactif. 🖌
- **Proxy**: Configuration pour gérer le CORS en développement. 🌐
### Patterns de Développement ⚙️
- Contrôle centralisé de la readiness des providers.
- Mappers pour normaliser les réponses des APIs.
- Effets Angular pour des mises à jour réactives. 🔁
- Recherche côté serveur pour les pages comme 'Liked videos'. 🔍
## Prérequis :checklist:
### Configuration avec Docker (Recommandé) 🐳
1. Copiez le fichier `docker-compose/.env.example` vers `docker-compose/.env` :
```bash
cp docker-compose/.env.example docker-compose/.env
```
2. Modifiez le fichier `.env` pour y ajouter vos clés API
3. Lancez l'application avec Docker Compose :
```bash
docker-compose -f docker-compose/docker-compose.yml up -d
```
4. L'application sera disponible sur http://localhost:8080
### Configuration manuelle (Développement) 🔧
1. Installer Node.js (LTS). :node:
2. Exécuter `npm install` pour les dépendances. 📦
3. Copier et configurer `assets/config.local.example.js` en `assets/config.local.js`. 🔑
4. Lancer avec `npm run dev`. :play_button:
### Variables d'environnement 🌐
Les variables d'environnement suivantes peuvent être configurées :
- `GEMINI_API_KEY` - Clé API pour Gemini (IA)
- `YOUTUBE_API_KEY` - Clé API YouTube
- `YOUTUBE_API_KEYS` - Liste de clés API YouTube (séparées par des virgules)
- `VIMEO_ACCESS_TOKEN` - Token d'accès Vimeo
- `TWITCH_CLIENT_ID` - ID client Twitch
- `TWITCH_CLIENT_SECRET` - Secret client Twitch
- `YT_CACHE_TTL_MS` - Durée de vie du cache en millisecondes (défaut: 3600000 - 1 heure)
### Lancement en Développement 💻
- `npm run dev` pour démarrer le serveur Angular. :play_button:
### Build de Production 📦
- `npm run build` pour compiler l'app. 🔨
## Déploiement avec Docker 🐳
- Construire l'image: `docker build -t newtube:latest .`.
- Lancer: `docker compose up -d`.
### Variables d'Environnement ⚙️
- `PORT`, `NODE_ENV`, `TWITCH_CLIENT_ID`, etc. 🔒
## Proxies pour le Développement 🌐
- Configurés dans `proxy.conf.json` pour contourner le CORS. 🛡
## Utilisation Rapide 🚀
- Sélectionnez un provider et recherchez. 🔍
- Explorez les tendances ou vos vidéos aimées. ❤️
## État des Fonctionnalités :checklist:
- [X] Readiness des providers. :check_mark_button:
- [X] Barre de recherche sur 'Liked videos'. :search:
- [ ] Tests unitaires. :test_tube:
## Roadmap et TODO 🎯
### Prochaines Étapes ▶️
- Ajouter un bandeau pour les providers non configurés. ⚠️
- Implémenter des tests unitaires. :test_tube:
### Priorités 🔥
- Améliorer les intégrations provider. 🌐
- Ajouter des fonctionnalités avancées. 🚀
## Scripts NPM 📦
## Notes de Sécurité et Bonnes Pratiques 🔒
- Ne pas versionner les clés API. ⛔️
- Restreindre les clés par referer. 🛡
- Gérer les erreurs avec des messages clairs.