# DaddyTV - IPTV PWA Aplicación web PWA para reproducir listas IPTV (.m3u/.m3u8) con interfaz amigable y enfoque personal para amigos y familiares. ## 🚀 Características - **PWA Instalable**: Funciona como app nativa en PC, móvil y TV - **Autenticación por código**: Sin registro, solo validación de código único - **Control de reproducción única**: Un canal por usuario simultáneamente - **Navegación con mando**: Compatible con controles remotos de TV - **Proxy integrado**: Bypass para canales con restricciones CORS/geo - **Sin base de datos**: Solo caché en memoria con TTL - **Responsive**: Optimizado para todos los dispositivos ## 🛠️ Tecnologías ### Backend - **FastAPI** (Python) - API REST modular - **Requests** - Cliente HTTP para M3U y proxy - **Cryptography** - Cifrado AES para códigos - **Uvicorn** - Servidor ASGI ### Frontend - **React 18** + **TypeScript** - Interfaz de usuario - **Vite** - Build tool y dev server - **Tailwind CSS** - Estilos y diseño responsive - **HLS.js** - Reproductor de video streaming - **Lucide React** - Iconos ## 📦 Instalación y Desarrollo ### Prerrequisitos - Node.js 18+ - Python 3.9+ ### Configuración 1. **Clonar el repositorio** ```bash git clone cd daddytv ``` 2. **Configurar variables de entorno** ```bash cp .env.example .env ``` Editar `.env` con tus valores: ```env MAIN_M3U_URL=https://tu-playlist.m3u8 ADMIN_CODE=tu-codigo-admin-hex AES_SECRET=tu-secreto-aes BASE_URL=https://tu-dominio.com ``` 3. **Instalar dependencias del frontend** ```bash npm install ``` 4. **Instalar dependencias del backend** ```bash cd api pip install -r requirements.txt ``` ### Desarrollo Local 1. **Iniciar backend** (terminal 1): ```bash cd api uvicorn main:app --reload --port 8000 ``` 2. **Iniciar frontend** (terminal 2): ```bash npm run dev ``` La aplicación estará disponible en `http://localhost:5173` ## 🚀 Despliegue ### Vercel (Recomendado) 1. **Conectar repositorio a Vercel** 2. **Configurar variables de entorno** en el dashboard de Vercel 3. **Deploy automático** - Vercel detecta la configuración automáticamente ### Render **Backend (Servicio Web):** - Build Command: `pip install -r requirements.txt` - Start Command: `uvicorn main:app --host 0.0.0.0 --port $PORT` - Root Directory: `api` **Frontend (Sitio Estático):** - Build Command: `npm run build` - Publish Directory: `dist` ## 📁 Estructura del Proyecto ``` daddytv/ ├── api/ # Backend FastAPI │ ├── main.py # Punto de entrada │ ├── auth.py # Autenticación │ ├── m3u_parser.py # Parser de M3U │ ├── proxy.py # Proxy para streams │ ├── viewers.py # Control de visualización │ ├── admin.py # Panel de administración │ ├── utils.py # Utilidades │ └── requirements.txt # Dependencias Python ├── src/ # Frontend React │ ├── components/ # Componentes UI │ ├── contexts/ # Context providers │ ├── hooks/ # Custom hooks │ ├── services/ # Servicios API │ ├── types/ # Tipos TypeScript │ └── main.tsx # Punto de entrada ├── public/ # Archivos estáticos ├── vercel.json # Configuración Vercel └── package.json # Dependencias Node.js ``` ## 🔧 API Endpoints ### Autenticación - `POST /api/auth` - Validar código de acceso - `POST /api/logout` - Cerrar sesión - `POST /api/ping` - Verificar autenticación ### Canales - `GET /api/channels` - Obtener lista de canales - `GET /api/playlist.m3u` - Descargar playlist M3U ### Streaming - `GET /api/proxy?url=` - Proxy para streams - `POST /api/viewers` - Registrar visualización - `GET /api/viewers/{channel_id}` - Contador de viewers ### Administración - `POST /api/admin/update` - Actualizar configuración - `GET /api/admin/status` - Estado del sistema ## 🎮 Controles ### Teclado/Mando - **↑/↓** - Navegar lista de canales - **Enter** - Seleccionar canal - **Escape** - Volver/Cerrar - **Backspace** - Retroceder ### Ratón/Táctil - **Click/Tap** - Seleccionar elementos - **Scroll** - Navegar listas - **Hover** - Mostrar controles de video ## 🔒 Seguridad - **Códigos únicos**: Validación sin almacenamiento - **Tokens temporales**: Sesiones en memoria - **Rate limiting**: Protección contra abuso - **Proxy seguro**: Headers de seguridad incluidos - **CORS configurado**: Acceso controlado ## 📱 PWA Features - **Instalable**: Funciona como app nativa - **Offline ready**: Caché de recursos estáticos - **Responsive**: Optimizado para todos los tamaños - **Manifest**: Configuración completa de PWA - **Service Worker**: Gestión de caché automática ## 🤝 Contribuir 1. Fork el proyecto 2. Crear rama feature (`git checkout -b feature/nueva-funcionalidad`) 3. Commit cambios (`git commit -am 'Agregar nueva funcionalidad'`) 4. Push a la rama (`git push origin feature/nueva-funcionalidad`) 5. Crear Pull Request ## 📄 Licencia Este proyecto es de uso personal/familiar. Consulta con el autor para otros usos. ## 🆘 Soporte Para soporte técnico o dudas, contacta al administrador del sistema.