Saltar a contenido

Reproductor Móvil

Este es el reproductor principal de blosteflix, una app móvil multiplataforma desarrollada con Flutter para consultar el catálogo y reproducir contenido.

Showcase

Carrousel de blosteflix

Arquitectura

La aplicación está construida siguiendo los principios de Clean Architecture, dividida en tres capas principales:

  • Domain: Entidades, repositorios abstractos y casos de uso
  • Infrastructure: Implementación de repositorios, APIs y mappers de datos
  • Presentation: Interfaces de usuario, providers de estado y servicios

Tecnologías principales

  • Flutter (SDK 3.10.7+): Framework multiplataforma
  • Riverpod: Gestión de estado reactiva
  • Chewie + Video Player: Reproducción de video HLS
  • Flutter Secure Storage: Almacenamiento seguro de tokens
  • HTTP: Comunicación con APIs REST

Que hace ?

  • Login y registro de usuarios con JWT
  • Autenticación con tokens de acceso y refresh
  • Muestra catálogo de videos con scroll infinito
  • Búsqueda y filtrado de contenido por categorías
  • Reproduce videos en formato HLS con selección de calidad (Auto, 480p, 720p, 1080p)
  • Visualización de videos relacionados
  • Gestión de cuenta de usuario

Interacción

Este componente interactúa con:

  • Catálogo Backend: Gestión de videos y categorías
  • Auth Backend: Autenticación y gestión de usuarios
  • Media Backend: Streaming HLS de videos

Endpoints

Endpoints de autenticación

  • POST /api/auth/token: Login de usuario (retorna access y refresh tokens)
  • POST /api/auth/register: Registro de nuevo usuario
  • POST /api/auth/refresh: Renovación de access token usando refresh token
  • GET /api/users/me: Obtener detalles del usuario autenticado (requiere Bearer token)
  • GET /api/catalogo: Recibe videos paginados (params: page, size, categoriaId opcional). La paginación es 0-indexed (page=0 para la primera página)
  • GET /api/catalogo/search: Búsqueda de videos por título (params: titulo, page, size). La paginación es 0-indexed
  • GET /api/catalogo/:id: Recibe detalles de un video específico
  • GET /api/categorias: Recibe categorías paginadas (params: page, size). La paginación es 0-indexed
  • GET /api/categorias/:id: Recibe una categoría específica

Endpoints video backend (Media Server)

Todos los endpoints de media requieren autenticación Bearer token en el header: + GET /api/hls/:videoid/master.m3u8: Playlist HLS adaptativo (Auto) + GET /api/hls/:videoid/480/playlist.m3u8: Playlist para calidad 480p + GET /api/hls/:videoid/720/playlist.m3u8: Playlist para calidad 720p + GET /api/hls/:videoid/1080/playlist.m3u8: Playlist para calidad 1080p + GET /api/hls/:videoid/:segment.ts: Recibe los segmentos de video para reproducción

Casos de uso

flowchart LR User([👤 User]) Player([🎬 Video Player]) subgraph Servidor_Catálogo VerCatalogo([Ver catálogo]) Filtrar([Buscar/Filtrar contenido]) Detalles([Ver detalles]) Categorias([Ver categorías]) end subgraph Servidor_Video ReproducirVideo([Reproducir Video]) SeleccionarCalidad([Seleccionar calidad]) VideosRelacionados([Ver relacionados]) end subgraph Servidor_Auth Login([Login]) Registro([Registro]) RefreshToken([Renovar sesión]) GestionCuenta([Gestión de cuenta]) end User --> Player Player --> VerCatalogo Player --> ReproducirVideo Player --> Login Player --> Registro Player --> Filtrar Player --> Detalles Player --> Categorias Player --> SeleccionarCalidad Player --> VideosRelacionados Player --> RefreshToken Player --> GestionCuenta

Diagramas de flujo

Diagrama UML

Buscar contenidos

Diagrama UML

Consultar detalle de un video

Diagrama UML

Iniciar sesión / Registro

Diagrama UML

Reproducir video

Diagrama UML

Renovar token de acceso

Diagrama UML

Ver videos relacionados

Diagrama UML

Filtrar por categorías

Diagrama UML