# Analisis del proyecto

## Resumen

Este repositorio contiene una biblioteca privada del curso "RAIO Archive" construida con Laravel 13.
El sistema organiza un curso desde exportaciones locales, reproduce video y audio, muestra subtitulos y
expone un panel de importacion para reconstruir la biblioteca desde archivos del propietario.

## Stack tecnico

- Backend: Laravel 13, PHP 8.3+
- Frontend: Vite, Tailwind CSS 4, JavaScript vanilla
- Reproductor multimedia: Plyr
- Base de datos: MySQL

## Funcionalidad principal

### Navegacion

- `GET /`: lista los cursos publicados.
- `GET /courses/{course}`: redirige a la primera leccion disponible.
- `GET /courses/{course}/lessons/{lesson}`: abre el reproductor y los recursos de una leccion.

### Importacion local

- `GET /imports`: formulario para localizar zips o carpetas locales.
- `POST /imports`: ejecuta la importacion y reconstruye curso, lecciones, posters, subtitulos y recursos.

### Streaming de media

- `GET /media/lessons/{lesson}/video`: sirve el video local con soporte `Range`.
- `GET /media/audio?path=...`: sirve MP3 locales importados con soporte `Range`.

## Estructura de codigo

### Modelos

- `Course`: define los cursos publicados y su progreso.
- `Lesson`: define lecciones, rutas de media, notas y recursos.

### Controladores

- `CourseController`: lista cursos y resuelve la primera leccion disponible.
- `LessonController`: carga la vista principal del player.
- `LibraryImportController`: valida rutas locales y ejecuta la importacion.
- `MediaController`: hace streaming de video y audio.

### Servicio principal

- `CourseArchiveImportService`: extrae zips, detecta el export de Notion, indexa videos y subtitulos,
  crea posters, calcula duraciones y reconstruye el contenido en base de datos.

## Datos y media

### Se versiona

- Codigo fuente Laravel.
- Recursos ligeros ya procesados dentro de `public/media/imported/`.
- Posters, subtitulos `.vtt`, MP3 y PDF/JPG auxiliares.

### No se versiona

- Videos fuente `.mp4` y otros formatos pesados.
- Zips de importacion.
- Backups SQL.
- Carpetas de trabajo locales como `curso/`, `storage/app/course-media/` y `storage/app/course-imports/`.

## Estado actual del repositorio

- El historial previo tenia un unico commit.
- El archivo trackeado mas sensible era `database/backups/curso_raio_library.sql`.
- El proyecto local contiene aproximadamente `23G`, pero la mayor parte corresponde a videos y archivos de trabajo excluidos de Git.
- Los recursos procesados que si permanecen versionados suman alrededor de `103M`.

## Riesgos y observaciones

- La aplicacion depende de rutas locales durante la importacion; el proyecto no esta pensado para despliegue publico.
- Las pruebas automaticas son minimas y no cubren el flujo de importacion.
- La base de datos real no se versiona; el estado debe regenerarse mediante migraciones e importacion local.
- `public/storage` no esta enlazado por defecto, aunque este proyecto sirve la media principal desde rutas propias.

## Politica recomendada para GitHub

- Mantener el repositorio en modo privado.
- No subir nunca archivos fuente de video, zips de exportacion ni dumps de base de datos.
- Crear tags de version solo cuando el estado del codigo y la documentacion esten sincronizados.
- Describir en cada version si se modifico la logica del importador, el player o la estructura de media.
