Club come entità principale, branding e fix infrastruttura streaming.

Introduce clubs con abbonamento, branding Active Storage e flusso registrazione società; corregge healthcheck MediaMTX (immagine distroless) e allinea dominio produzione matchlivetv.it.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-27 09:16:24 +02:00
parent 471291b2c4
commit 4083bc5dee
53 changed files with 1120 additions and 197 deletions

View File

@@ -6,8 +6,8 @@ YOUTUBE_CLIENT_ID=
YOUTUBE_CLIENT_SECRET=
YOUTUBE_REDIRECT_URI=http://localhost:3000/api/v1/youtube/callback
PRIVACY_CONTROLLER_NAME=Gestore del servizio Match Live TV (sviluppo)
PRIVACY_CONTROLLER_ADDRESS=Indirizzo di sviluppo
PRIVACY_CONTACT_EMAIL=privacy@matchlivetv.it
MAILER_FROM=Match Live TV <noreply@matchlivetv.it>
PRIVACY_CONTROLLER_NAME=Emiliano Frascaro
PRIVACY_CONTROLLER_ADDRESS=Via Guido De Ruggiero, 89 - 20142 - Milano (MI)
PRIVACY_CONTACT_EMAIL=privacy@matchlive.it
MAILER_FROM=Match Live TV <noreply@matchlive.it>
PASSWORD_RESET_EXPIRY_HOURS=2

View File

@@ -7,15 +7,15 @@ JWT_SECRET=CHANGE_ME_openssl_rand_hex_32
MEDIAMTX_WEBHOOK_SECRET=CHANGE_ME_openssl_rand_hex_32
# RTMP pubblico per telefoni (IP WAN o DDNS + porta 1935)
MEDIAMTX_RTMP_URL=rtmp://YOUR_PUBLIC_IP_OR_DOMAIN:1935
MEDIAMTX_RTMP_URL=rtmp://www.matchlivetv.it:1935
# Dominio pubblico (Nginx Proxy Manager → Rails :3000)
APP_PUBLIC_URL=https://matchlivetv.yourdomain.com
HLS_PUBLIC_URL=https://matchlivetv.yourdomain.com/hls
APP_PUBLIC_URL=https://www.matchlivetv.it
HLS_PUBLIC_URL=https://www.matchlivetv.it/hls
CORS_ORIGINS=https://matchlivetv.yourdomain.com
ALLOWED_HOSTS=matchlivetv.yourdomain.com,192.168.1.146
YOUTUBE_REDIRECT_URI=https://matchlivetv.yourdomain.com/api/v1/youtube/callback
CORS_ORIGINS=https://www.matchlivetv.it,https://matchlivetv.it
ALLOWED_HOSTS=www.matchlivetv.it,matchlivetv.it,192.168.1.146,localhost
YOUTUBE_REDIRECT_URI=https://www.matchlivetv.it/api/v1/youtube/callback
# YouTube OAuth (opzionale)
YOUTUBE_CLIENT_ID=
@@ -30,13 +30,13 @@ STRIPE_PREMIUM_FULL_PRICE_ID=
RAILS_LOG_LEVEL=info
# Titolare trattamento (GDPR) — obbligatorio in produzione
PRIVACY_CONTROLLER_NAME=Ragione sociale / nome titolare
PRIVACY_CONTROLLER_ADDRESS=Indirizzo sede legale
PRIVACY_CONTACT_EMAIL=privacy@matchlivetv.it
PRIVACY_CONTROLLER_NAME=Emiliano Frascaro
PRIVACY_CONTROLLER_ADDRESS=Via Guido De Ruggiero, 89 - 20142 - Milano (MI)
PRIVACY_CONTACT_EMAIL=privacy@matchlive.it
PRIVACY_CONTROLLER_VAT=
# Email transazionali (reset password, inviti)
MAILER_FROM=Match Live TV <noreply@matchlivetv.it>
MAILER_FROM=Match Live TV <noreply@matchlive.it>
SMTP_ADDRESS=
SMTP_PORT=587
SMTP_USERNAME=

View File

@@ -39,11 +39,13 @@ services:
- ./slates:/slates:ro
- recordings:/recordings
command: /mediamtx.yml
# Immagine distroless: niente shell/wget/curl; API :9997 non esposta sull'host
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:9997/v3/config/global/get"]
test: ["CMD", "/mediamtx", "--help"]
interval: 15s
timeout: 5s
retries: 3
start_period: 10s
rails:
build:
@@ -70,6 +72,17 @@ services:
YOUTUBE_REDIRECT_URI: ${YOUTUBE_REDIRECT_URI:-}
HLS_PUBLIC_URL: ${HLS_PUBLIC_URL:-http://localhost:8888}
APP_PUBLIC_URL: ${APP_PUBLIC_URL:-http://localhost:3000}
PRIVACY_CONTACT_EMAIL: ${PRIVACY_CONTACT_EMAIL:-privacy@matchlive.it}
PRIVACY_CONTROLLER_NAME: ${PRIVACY_CONTROLLER_NAME:-Emiliano Frascaro}
PRIVACY_CONTROLLER_ADDRESS: ${PRIVACY_CONTROLLER_ADDRESS:-Via Guido De Ruggiero, 89 - 20142 - Milano (MI)}
PRIVACY_CONTROLLER_VAT: ${PRIVACY_CONTROLLER_VAT:-}
MAILER_FROM: ${MAILER_FROM:-Match Live TV <noreply@matchlive.it>}
SMTP_ADDRESS: ${SMTP_ADDRESS:-}
SMTP_PORT: ${SMTP_PORT:-587}
SMTP_USERNAME: ${SMTP_USERNAME:-}
SMTP_PASSWORD: ${SMTP_PASSWORD:-}
SMTP_AUTH: ${SMTP_AUTH:-plain}
SMTP_STARTTLS: ${SMTP_STARTTLS:-true}
RAILS_LOG_TO_STDOUT: "true"
RAILS_LOG_LEVEL: ${RAILS_LOG_LEVEL:-info}
ports:

View File

@@ -40,10 +40,11 @@ services:
- recordings:/recordings
command: /mediamtx.yml
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:9997/v3/config/global/get"]
test: ["CMD", "/mediamtx", "--help"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
rails:
build:
@@ -64,6 +65,10 @@ services:
YOUTUBE_CLIENT_SECRET: ${YOUTUBE_CLIENT_SECRET:-}
YOUTUBE_REDIRECT_URI: ${YOUTUBE_REDIRECT_URI:-http://localhost:3000/api/v1/youtube/callback}
RAILS_LOG_TO_STDOUT: "true"
PRIVACY_CONTROLLER_NAME: ${PRIVACY_CONTROLLER_NAME:-Emiliano Frascaro}
PRIVACY_CONTROLLER_ADDRESS: ${PRIVACY_CONTROLLER_ADDRESS:-Via Guido De Ruggiero, 89 - 20142 - Milano (MI)}
PRIVACY_CONTACT_EMAIL: ${PRIVACY_CONTACT_EMAIL:-privacy@matchlive.it}
MAILER_FROM: ${MAILER_FROM:-Match Live TV <noreply@matchlive.it>}
ports:
- "3000:3000"
depends_on: