Skip to content

Gabriel-marchante/Prisma

Repository files navigation

🎬 PRISMA

Plataforma de Distribución y Gestión de Contenido de Vídeo

Una plataforma de streaming completa inspirada en Netflix, construida con arquitectura de microservicios.

Version Architecture Docker


📖 Descripción

Prisma es una plataforma completa de streaming de vídeo que permite a los usuarios explorar un catálogo, reproducir contenido en alta calidad mediante streaming adaptativo HLS y gestionar sus suscripciones. Los administradores disponen de un panel dedicado para gestionar todo el contenido y los metadatos.

El sistema está compuesto por 5 servicios independientes que se comunican entre sí y se despliegan mediante Docker.


🏗️ Arquitectura

┌─────────────────┐     ┌─────────────────┐
│   App Móvil     │     │   App Admin     │
│  Flutter/Dart   │     │    Vue.js       │
└────────┬────────┘     └────────┬────────┘
         │                       │
         ▼                       ▼
┌─────────────────┐     ┌─────────────────┐
│ Servidor        │     │ Servidor        │
│ Catálogo        │     │ de Medios       │
│ SpringBoot/Java │     │ Express/Node.js │
└────────┬────────┘     └────────┬────────┘
         │                       │
         ▼                       ▼
┌─────────────────────────────────────────┐
│         Sistema de Gestión (Odoo)       │
│    Autenticación · Suscripciones · JWT  │
└────────┬──────────────┬────────────────-┘
         │              │
    ┌────▼────┐    ┌─────▼──────┐   ┌────────────┐
    │ MongoDB │    │   MySQL    │   │ PostgreSQL │
    │Catálogo │    │   Odoo     │   │   Medios   │
    └─────────┘    └────────────┘   └────────────┘

🧩 Servicios

Servicio Tecnología Responsabilidad
📱 App Móvil Flutter / Dart Cliente multiplataforma iOS & Android
🖥️ App Admin Vue.js Panel de administración de contenido
📚 Catálogo SpringBoot (Java) API REST de metadatos, categorías y series
🎞️ Medios Express (Node.js) Streaming HLS adaptativo (720p / 1080p / 4K)
👤 Gestión Odoo (Python) Autenticación JWT, suscripciones y pagos

✨ Funcionalidades

Usuario final

  • 🔐 Autenticación con tokens JWT
  • 🎬 Reproducción en streaming adaptativo (HLS) según ancho de banda
  • 📋 Catálogo con filtros por categoría, género y serie
  • 📊 Historial de reproducciones con progreso guardado
  • 💳 Gestión de suscripción y métodos de pago (Visa, MasterCard, PayPal)
  • 👥 Múltiples perfiles por cuenta

Administrador

  • ⬆️ Subida y eliminación de vídeos
  • ✏️ Gestión de metadatos del catálogo
  • 🔄 Pipeline automático de procesamiento de vídeo con FFmpeg

🛠️ Tecnologías

Backend

Java Spring Boot Node.js Express Python

Frontend

Flutter Vue.js

Bases de datos

MongoDB MySQL PostgreSQL

Infraestructura

Docker GitHub Actions FFmpeg


🎞️ Pipeline de Procesamiento de Vídeo

Cuando un administrador sube un vídeo, el sistema ejecuta automáticamente:

1. 📤 Subida del .mp4 original
        ↓
2. 🔍 Extracción de metadatos (FFmpeg)
        ↓
3. ✂️ Segmentación en 720p / 1080p / 4K (FFmpeg)
        ↓
4. 💾 Almacenamiento en /Public/video:id/:resolution
        ↓
5. 📄 Generación del index.m3u8 (HLS playlist)

🚀 Instalación

Requisitos previos

Levantar el sistema

# 1. Clona el repositorio
git clone https://github.com/Gabriel-marchante/Prisma.git
cd Prisma

# 2. Levanta todos los servicios
docker compose up -d

# 3. Servicios disponibles
# Catálogo:  http://localhost:8080
# Medios:    http://localhost:3001
# Odoo:      http://localhost:8069

📡 API — Endpoints principales

Catálogo

Método Ruta Descripción
GET /cataleg Lista el catálogo paginado (10 por página)
GET /cataleg/:id Detalle completo de un vídeo
POST /cataleg Añade un vídeo (admin)
PATCH /cataleg/:id Actualiza metadatos (admin)
DELETE /cataleg/:id Elimina un vídeo (admin)

Medios

Método Ruta Descripción
GET /Public/video:id/:resolution Streaming HLS por resolución
POST /vid Sube un fichero de vídeo (admin)
DELETE /vid/:id Elimina un vídeo (admin)

Gestión (Odoo)

Método Ruta Descripción
POST /login Inicio de sesión → JWT
POST /user Registro de usuario
POST /sub/cancel/:user Cancela suscripción
PUT /sub/payment/:id Modifica método de pago

✍️ Créditos

Desarrollado por Macloud Team (Gabriel Marchante).

LinkedIn GitHub


About

🎬 Plataforma de streaming de vídeo tipo Netflix con microservicios. SpringBoot · Node.js · Flutter · Vue.js · Odoo · MongoDB · Docker

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors