Cliente multiplataforma (Android, Escritorio, iOS) para la API REST de FlaskCast — gestión de series, películas, progreso, favoritos y listas de reproducción.
Importante: La aplicación necesita que la API de FlaskCast esté ejecutándose para funcionar. Sin ella no se podrán realizar ni lecturas ni escrituras.
- JDK 17+
- Android SDK (compileSdk 36) para Android
- Xcode para iOS
- Python 3 + Flask corriendo la API de FlaskCast
# Android
./gradlew :androidApp:assembleDebug
# Escritorio (hot reload)
./gradlew :desktopApp:hotRun --auto
# Escritorio (estándar)
./gradlew :desktopApp:run
# iOS — abrir iosApp/ en Xcode./gradlew :shared:testAndroidHostTest # Android
./gradlew :shared:jvmTest # Escritorio
./gradlew :shared:iosSimulatorArm64Test # iOSFlaskCastManager/
├── androidApp/ # App Android
├── desktopApp/ # App Escritorio (JVM + Compose)
├── iosApp/ # App iOS (SwiftUI entry point)
├── shared/ # Código compartido
│ └── src/
│ ├── commonMain/ # Lógica y UI compartida (API, pantallas, i18n)
│ ├── androidMain/ # Implementación Android (contexto, browser)
│ ├── jvmMain/ # Implementación Desktop (browser)
│ └── iosMain/ # Implementación iOS (browser)
└── gradle/libs.versions.toml
La app se conecta a la API de FlaskCast via HTTP. La URL del servidor se configura en la pantalla de login.
Sesión basada en cookies (HTTP cookies gestionadas por Ktor HttpCookies).
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/videos |
Obtener todos los videos |
| GET | /api/videos/{serie} |
Obtener videos de una serie |
| GET | /api/estados |
Obtener estados de los videos |
| POST | /api/videos/add |
Agregar video (multipart: serie, temporada, archivo) |
| POST | /api/guardar_progreso |
Guardar progreso de visualización |
| POST | /api/toggle_favorito |
Alternar favorito |
| POST | /api/guardar_lista |
Guardar en lista de reproducción |
| POST | /api/convertir |
Convertir video a MP4 |
| POST | /api/eliminar_video |
Eliminar archivo de video |
| POST | /api/contenido/crear |
Crear serie/película nueva |
| POST | /api/contenido/temporada |
Crear temporada |
| GET | /usuarios_panel |
Obtener lista de usuarios (HTML) |
| Código | Estado |
|---|---|
0 |
Pendiente |
1 |
Viendo |
2 |
Visto |
-1 |
Eliminar |
- GETs: Obtener videos, videos por serie, estados, progreso, favoritos, listas
- POSTs: Agregar video, guardar progreso, toggle favorito, guardar lista, convertir MP4, eliminar archivo, crear contenido, crear temporada
- Selector de archivos: Seleccionar video desde el dispositivo con FileKit
- Login de usuario: Selección de perfil con persistencia de sesión
- i18n: Español / English con toggle en pantalla de login
- Icono de app: Soporte en Android (mipmaps), Escritorio (resources) y iOS (Assets)
- Abrir en navegador: Botón fijo para abrir la interfaz web de FlaskCast
- Iniciar la API — Correr FlaskCast (
python app.py) - Abrir la app — Ejecutar en la plataforma deseada
- Configurar dominio — Ingresar la IP/puerto del servidor en el campo de Dominio
- Iniciar sesión — Presionar "Iniciar sesión" y seleccionar un usuario
- Explorar — Usar los botones GET para ver datos, POST para modificar
- Agregar video — Presionar "Agregar Video", completar serie/temporada, seleccionar archivo
- Gestionar contenido — Crear series, temporadas, convertir videos, eliminar archivos
| Tecnología | Versión |
|---|---|
| Kotlin | 2.4.10 |
| Compose Multiplatform | 1.11.1 |
| Ktor (HTTP client) | 3.1.1 |
| kotlinx-serialization | 1.8.0 |
| kotlinx-coroutines | 1.11.0 |
| Material3 | 1.11.0-alpha07 |
| FileKit | 0.14.2 |
| Android (compileSdk) | 36 |