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
git clone <repo-url>
cd daddytv
  1. Configurar variables de entorno
cp .env.example .env

Editar .env con tus valores:

MAIN_M3U_URL=https://tu-playlist.m3u8
ADMIN_CODE=tu-codigo-admin-hex
AES_SECRET=tu-secreto-aes
BASE_URL=https://tu-dominio.com
  1. Instalar dependencias del frontend
npm install
  1. Instalar dependencias del backend
cd api
pip install -r requirements.txt

Desarrollo Local

  1. Iniciar backend (terminal 1):
cd api
uvicorn main:app --reload --port 8000
  1. Iniciar frontend (terminal 2):
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.