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
30 lines
1.1 KiB
YAML
30 lines
1.1 KiB
YAML
services:
|
|
newtube:
|
|
image: docker-registry.dev.home:5000/newtube-angular:latest
|
|
container_name: newtube
|
|
hostname: ${NGINX_HOSTNAME}
|
|
ports:
|
|
- "8080:4000"
|
|
environment:
|
|
- PORT=${PORT}
|
|
- NODE_ENV=${NODE_ENV}
|
|
- JWT_SECRET=${JWT_SECRET}
|
|
- ACCESS_TTL_MIN=${ACCESS_TTL_MIN}
|
|
- REFRESH_TTL_DAYS=${REFRESH_TTL_DAYS}
|
|
- REMEMBER_TTL_DAYS=${REMEMBER_TTL_DAYS}
|
|
- YT_CACHE_TTL_MS=${YT_CACHE_TTL_MS}
|
|
- 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}
|
|
volumes:
|
|
- ${DIR_NEWTUBE}/assets:/app/assets
|
|
- ${DIR_NEWTUBE}/db:/app/db
|
|
- ${DIR_NEWTUBE}/tmp/downloads:/app/tmp/downloads
|
|
restart: unless-stopped
|