# Match Live TV Piattaforma mobile-first per streaming di partite sportive giovanili — MVP su **Match Live TV** (HLS sul nostro sito); YouTube/Facebook/Twitch come integrazioni premium. **Slogan:** *Ogni partita, ogni evento, per i tuoi tifosi.* ## Struttura monorepo ``` ├── backend/ # Rails 7.2 API + Action Cable + Sidekiq ├── native/android/ # App Android nativa (Kotlin + Compose) ├── infra/ # Docker Compose, MediaMTX, Nginx, Kamal └── docs/ # Documentazione ``` ## Deploy produzione (server 192.168.1.146) Vedi [docs/infrastructure/SERVER_DEPLOYMENT.md](docs/infrastructure/SERVER_DEPLOYMENT.md) per porte router, NPM e procedura completa. **Porte da aprire sul router:** `1935/TCP` (RTMP). Opzionale `8888/TCP` (HLS). HTTPS via Nginx Proxy Manager verso `http://192.168.1.146:3000`. **Sul server (una tantum, con sudo):** ```bash sudo bash ~/matchlivetv/scripts/deploy/server_bootstrap.sh bash ~/matchlivetv/scripts/deploy/post_bootstrap_deploy.sh ``` ## Avvio rapido (locale) ```bash cd infra cp .env.example .env docker compose up -d --build ``` - API Rails: http://localhost:3000 - MediaMTX RTMP: rtmp://localhost:1935 - MediaMTX API: http://localhost:9997 - Admin: http://localhost:3000/admin ### Seed utente demo ``` email: coach@matchlivetv.test password: password123 ``` ## App Android nativa ```bash ./scripts/build_native_android_apk_prod.sh adb install -r native/android/app/build/outputs/apk/release/app-release.apk ``` API produzione: `https://www.matchlivetv.it` (override con `-PAPI_BASE_URL=...` in Gradle). Vedi [native/android/README.md](native/android/README.md). ## Architettura - Video (MVP): Phone → MediaMTX (RTMP) → HLS su `matchlivetv.*` (pagina `/live/:session_id`) - Video (premium): stesso ingest + relay ffmpeg verso YouTube - Controllo: Phone ↔ Action Cable ↔ Rails ↔ PostgreSQL - Disconnessioni: MediaMTX `alwaysAvailable` slate + timeout 5 min (Sidekiq) ### App Android produzione ```bash ./scripts/build_native_android_apk_prod.sh # API: https://www.matchlivetv.it ```