App Android · 2025
VeoVeo
Una app Android para buscar películas y series, puntuarlas y llevar la cuenta de lo que he visto y de lo que me queda, con su propia API en mi servidor.
- Rol
- Proyecto personal · todo el stack
- Año
- 2025
- Stack
- Android
- Java
- Retrofit
- Flask
- Python
- SQLite
- Docker




Por qué lo hice
Quería algo muy simple: no perder la cuenta de qué películas y series había visto y cuáles tenía pendientes. En vez de depender de una app de terceros, me hice la mía, con mis datos guardados en mi propio servidor. Y de paso era la excusa perfecta para construir una app Android completa, de la pantalla a la base de datos.
Cómo funciona
- Tu móvilApp Android en Java
- HTTPSSubdominio propio detrás de Caddy
- API propiaFlask en un contenedor Docker
- Base de datosSQLite: vistas, pendientes y notas
La búsqueda, los carteles y las fichas vienen de la API pública de OMDb, que la app consulta directamente.
La historia
La idea
Empezó como proyecto de 2.º de DAM: una app Android nativa, en Java, para buscar películas y series y apuntar las que ves. Quería que pareciera una app de verdad, no un ejercicio, así que le di una estética de cine clásico, con palomitas y claquetas de fondo.
Buscar sin construir un catálogo
En lugar de cargar yo miles de títulos, la app consulta la API de OMDb: escribes «Titanic» y aparecen el cartel, el año, la duración, la sinopsis, el director, los actores y el género. Retrofit hace las peticiones, Glide carga los carteles y Shimmer rellena el hueco mientras llegan los datos.
Mi lista, con nota
Cada título se marca como visto con una nota de estrellas (con medias estrellas incluidas) o se manda a pendientes. En «Mis películas vistas» se ordenan por nota o por fecha, para acordarme de qué me gustó más y de qué vi último.
Una API propia
Lo que guardas no se queda solo en el móvil: lo recibe una API REST que escribí en Flask, con inicio de sesión y su base de datos SQLite. Al principio solo funcionaba conectado a la wifi de casa.
Sacarla de casa
Hoy la API corre en un contenedor Docker de mi servidor, publicada con su propio subdominio y certificado HTTPS. La app funciona igual con wifi que con datos móviles, esté donde esté.
Problemas que resolví
- El problema
La app dejó de conectar porque la dirección del servidor estaba escrita dentro del código.
Cómo lo resolvíLa saqué a la configuración de compilación: cambiar de servidor ya no obliga a tocar el código.
- El problema
Con datos móviles no llegaba a la API, que solo era accesible desde la red de casa.
Cómo lo resolvíLa publiqué detrás del proxy de mi servidor, con dominio propio y HTTPS, en vez de abrir puertos a pelo.
- El problema
Las pantallas se veían vacías mientras cargaban los carteles.
Cómo lo resolvíUn esqueleto animado (Shimmer) ocupa el sitio mientras llegan los datos, y Glide guarda los carteles en caché.
Lo que aprendí
Es la app que uso para llevar mis películas y series. Y me enseñó a pensar en todo el recorrido: lo que ve el usuario, la API que hay detrás y el servidor donde vive.