MOPI es una aplicación web que te permite descargar audio de alta calidad desde YouTube y SoundCloud de forma simple y rápida.
👉 Puedes probarla aquí: https://mopi-592fa.web.app/
- Soporte multiplataforma: YouTube y SoundCloud
- Múltiples calidades: 128, 192 y 256 kbps
- Vista previa: Reproduce el contenido antes de descargar
- Interfaz moderna: Diseño limpio y responsivo con React y Tailwind
- API robusta: Backend en FastAPI con rate limiting y validación
- Dockerizado: Fácil despliegue y desarrollo
- Requisitos: Docker y FFmpeg instalados
- Iniciar servicios:
cd backend docker compose up -d - Verificar: El servicio estará disponible en
http://localhost:8000 - Documentación: Accede a
http://localhost:8000/docs3
- Instalar dependencias:
cd frontend npm install - Desarrollo:
npm run dev
- Build:
npm run build
- Frontend: React 19 + TypeScript + Vite + Tailwind CSS
- Backend: FastAPI + yt-dlp + Redis (opcional)
- Rate Limiting: Protección contra abuso con Redis
- CORS: Configurado para desarrollo y producción
| Endpoint | Método | Descripción |
|---|---|---|
/download-audio/ |
POST | Descarga audio desde URL |
/iframe-sc/ |
POST | Obtiene iframe de SoundCloud |
/docs |
GET | Documentación interactiva |
REDIS_HOST: Host de Redis (default: host.docker.internal)REDIS_PORT: Puerto de Redis (default: 6379)REDIS_PASSWORD: Contraseña de RedisREDIS_SSL: Habilitar SSL (default: True)IFRAME_SC: API para iframes de SoundCloud
Por defecto: 1 solicitud cada 5 segundos por IP. Configurable via Redis.
docker compose up -dDescomenta las líneas de Redis en docker-compose.yml y ejecuta el mismo comando.
| Comando | Descripción |
|---|---|
docker compose up -d |
Iniciar servicios |
docker compose down |
Detener servicios |
docker logs -f cont-apimopi |
Ver logs de la API |
npm run dev |
Servidor de desarrollo (Frontend) |
npm run lint |
Verificar código (Frontend) |
- Ingresa el link de YouTube o SoundCloud
- Previsualiza el contenido
- Personaliza el título y calidad
- Descarga tu archivo MP3
- Fork el proyecto
- Crea una rama para tu feature
- Commit tus cambios
- Push a la rama
- Abre un Pull Request
Desarrollado con ❤️ para la comunidad