Skip to content

luiscacuango2/LuigiPlay

Repository files navigation

LuigiPlay 🎬

Java Spring Boot Gradle License

Descripción

LuigiPlay es una plataforma robusta desarrollada en Java y Spring Boot diseñada para la gestión y reproducción de contenido multimedia. El sistema está enfocado en ofrecer una arquitectura escalable, segura y optimizada para el streaming de datos.

Este proyecto integra tecnologías modernas como IA Generativa (LangChain4j) y documentación automática con OpenAPI.


🚀 Características Principales

  • Gestión Multimedia: Catálogo organizado de contenidos.
  • Arquitectura Limpia: Separación clara de capas (Controller, Service, Repository).
  • Inteligencia Artificial: Integración con LLMs mediante LangChain4j.
  • Documentación Viva: API documentada automáticamente con Swagger/OpenAPI.
  • API RESTful: Endpoints optimizados para consumo desde clientes Web o Mobile.

📂 Estructura del Proyecto

El proyecto sigue una arquitectura en capas para garantizar la separación de responsabilidades:

src/main/java/com/platzi/platzi_play
├── 📦 domain           # Reglas de negocio y modelos agnósticos
│   ├── 📂 dto          # Objetos de transferencia de datos
│   ├── 📂 service      # Lógica de negocio e interfaces de servicio
│   ├── 📂 repository   # Interfaces de repositorio (puertos)
│   └── 📂 exception    # Excepciones de dominio
├── 📦 persistence      # Implementación de acceso a datos
│   ├── 📂 entity       # Entidades JPA (Base de datos)
│   ├── 📂 crud         # Interfaces Spring Data CRUD
│   ├── 📂 mapper       # Mapeadores (MapStruct) Entity <-> Domain
│   └── 📜 *Repository  # Implementaciones de repositorios
└── 📦 web              # Capa de presentación (API REST)
    ├── 📂 controller   # Endpoints de la API
    └── 📂 exception    # Manejo global de errores HTTP

📦 Dependencias Clave

El proyecto utiliza un stack moderno gestionado por Gradle:

  • Framework Principal: Spring Boot 4.0.0 (Web, Data JPA, Validation).
  • Inteligencia Artificial: LangChain4j para integración con modelos de lenguaje (OpenAI).
  • Mapeo de Objetos: MapStruct para la conversión eficiente entre Entidades y DTOs.
  • Documentación: SpringDoc OpenAPI (Swagger UI).
  • Base de Datos: PostgreSQL Driver.

✨ Buenas Prácticas Implementadas

Para garantizar la mantenibilidad y escalabilidad, se han aplicado los siguientes patrones y principios:

  1. Arquitectura Limpia (Clean Architecture):

    • El dominio no depende de frameworks externos (o lo mínimo posible).
    • La persistencia es un detalle de implementación, desacoplada mediante interfaces.
  2. Patrón DTO (Data Transfer Object):

    • No se exponen las Entidades de base de datos (@Entity) directamente en la API.
    • Se usan DTOs para definir contratos claros de entrada y salida.
  3. Manejo Centralizado de Errores:

    • Uso de @ControllerAdvice para capturar excepciones y devolver respuestas JSON estandarizadas (RFC 7807 o formato personalizado).
  4. Inyección de Dependencias:

    • Preferencia por inyección vía constructor para garantizar inmutabilidad y facilitar el testing.
  5. Principios SOLID:

    • Diseño modular enfocado en la responsabilidad única y la inversión de dependencias.

🔍 Módulos y Cobertura

El sistema garantiza su estabilidad mediante pruebas unitarias y de integración:

Módulo Responsabilidad Estado
User Service Gestión de perfiles y autenticación. ✅ Operativo
Media Engine Procesamiento y lógica de reproducción. 🏗️ En Desarrollo
Catalog API Gestión de metadatos de series y películas. ✅ Operativo
AI Service Recomendaciones y procesamiento con IA. 🧪 Testing

🛠️ Requisitos del Sistema

  • JDK: 25.
  • Base de Datos: PostgreSQL.
  • Build Tool: Gradle.
  • Docker: Opcional (para desarrollo con Docker Compose).

⚙️ Instalación y Configuración

  1. Clonar el repositorio:

    git clone https://github.com/luiscacuango2/LuigiPlay.git
    cd LuigiPlay
  2. Configurar el entorno: Edita el archivo src/main/resources/application.properties con tus credenciales de base de datos y API Keys necesarias (OpenAI, etc.).

  3. Compilar y Ejecutar:

    ./gradlew build
    ./gradlew bootRun
  4. Acceder a la Documentación: Una vez levantado, visita: http://localhost:8080/swagger-ui.html


🤝 Contribución

¡Las contribuciones son bienvenidas! Por favor, lee nuestro archivo CONTRIBUTING.md para conocer los detalles sobre nuestro código de conducta y el proceso para enviarnos pull requests.

📄 Licencia

Este proyecto está bajo la Licencia MIT - mira el archivo LICENSE para más detalles.

About

Plataforma de peliculas de Luigi Play

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors