abcd / README.md
docs4you's picture
Upload 41 files
84121fd verified
# 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 <repo-url>
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=<stream_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.