Files
MatchLiveTv/README.md
Emiliano Frascaro 68b4390282 Completa app Android nativa e rimuove il client Flutter.
Il monorepo punta a native/android (login, wizard, diretta RTMP, tabellone WebSocket, pausa/telemetria) con encode 16:9 e orientamento via sensore; eliminati mobile/ e gli script Flutter obsoleti.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 17:38:56 +02:00

72 lines
2.0 KiB
Markdown

# 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
```