feat(channel): page details chaine multi-providers avec onglets et infinite scroll
CI / build-and-test (push) Successful in 13m34s
CI / build-and-test (push) Successful in 13m34s
- Strategy Pattern front: ChannelProviderInterface + 6 providers (yt/dm/tw/pt/od/ru) + factory (ids longs/courts) - ChannelContentService: cache par onglet/tri/recherche (TTL 5min), pagination nextPage - ChannelPage: header (banniere/avatar/subs/description ...plus), tabs dynamiques par capabilities, grilles videos/shorts 9:16/playlists/live, recherche debounced, tri recent/populaire, infinite scroll IntersectionObserver, skeletons/empty/error - Backend: GET /api/channels/:provider/:id/content (videos/shorts/playlists/live) natif par provider
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# Installation locale — build de l'image depuis le repo, pas de registre.
|
||||
# Usage: docker compose -f docker-compose/docker-compose.local.yml up -d --build
|
||||
# Variables d'env lues dans docker-compose/.env (même répertoire).
|
||||
services:
|
||||
newtube:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: docker/Dockerfile.origi
|
||||
image: newtube-angular:latest
|
||||
container_name: newtube
|
||||
ports:
|
||||
# Hôte 4200 -> conteneur 4000 (4000 reste libre pour le serveur de dev local)
|
||||
- "${HOST_PORT:-4200}:4000"
|
||||
environment:
|
||||
- PORT=${PORT:-4000}
|
||||
- NODE_ENV=${NODE_ENV:-production}
|
||||
- JWT_SECRET=${JWT_SECRET:-dev-secret-change-me}
|
||||
- ACCESS_TTL_MIN=${ACCESS_TTL_MIN:-15}
|
||||
- REFRESH_TTL_DAYS=${REFRESH_TTL_DAYS:-2}
|
||||
- REMEMBER_TTL_DAYS=${REMEMBER_TTL_DAYS:-30}
|
||||
- YT_CACHE_TTL_MS=${YT_CACHE_TTL_MS:-1800000}
|
||||
- GEMINI_API_KEY=${GEMINI_API_KEY}
|
||||
- YOUTUBE_API_KEY=${YOUTUBE_API_KEY}
|
||||
- YOUTUBE_API_KEYS=${YOUTUBE_API_KEYS}
|
||||
- VIMEO_ACCESS_TOKEN=${VIMEO_ACCESS_TOKEN}
|
||||
- TWITCH_CLIENT_ID=${TWITCH_CLIENT_ID}
|
||||
- TWITCH_CLIENT_SECRET=${TWITCH_CLIENT_SECRET}
|
||||
- DOWNLOAD_PROVIDERS=${DOWNLOAD_PROVIDERS:-youtube,dailymotion,twitch,peertube,odysee,rumble}
|
||||
- DOWNLOAD_MAX_CONCURRENT=${DOWNLOAD_MAX_CONCURRENT:-2}
|
||||
- TZ=${TZ:-America/Montreal}
|
||||
volumes:
|
||||
# SQLite : volume nommé (locking FS bind monté Windows peu fiable)
|
||||
- newtube-db:/app/db
|
||||
# Téléchargements : bind sur le repo, accessibles depuis Windows
|
||||
- ../tmp/downloads:/app/tmp/downloads
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
newtube-db:
|
||||
Reference in New Issue
Block a user