Skip to content
← All projects

Android app · 2025

VeoVeo

An Android app to search films and series, rate them and keep track of what I've watched and what's left, with its own API on my server.

Role
Personal project · whole stack
Year
2025
Stack
  • Android
  • Java
  • Retrofit
  • Flask
  • Python
  • SQLite
  • Docker
VeoVeo search showing results for “Titanic”
VeoVeo search showing results for “Titanic”
Film page with synopsis, director, cast and genre
Film page with synopsis, director, cast and genre
Dialog to rate the film with stars
Dialog to rate the film with stars
“My watched films” list, sortable by rating or date
“My watched films” list, sortable by rating or date

Why I built it

I wanted something very simple: never lose track of which films and series I'd watched and which were still pending. Instead of relying on a third-party app, I built my own, with my data stored on my own server. It was also the perfect excuse to build a complete Android app, from the screen to the database.

How it works

  1. Your phoneAndroid app in Java
  2. HTTPSOwn subdomain behind Caddy
  3. Own APIFlask in a Docker container
  4. DatabaseSQLite: watched, pending and ratings

Search results, posters and film details come from the public OMDb API, called straight from the app.

The story

  1. The idea

    It started as a second-year DAM project: a native Android app, in Java, to search films and series and log the ones you watch. I wanted it to feel like a real app, not an exercise, so I gave it a classic-cinema look with popcorn and clapperboards in the background.

  2. Search without building a catalogue

    Instead of loading thousands of titles myself, the app queries the OMDb API: type “Titanic” and you get the poster, year, runtime, synopsis, director, cast and genre. Retrofit handles the requests, Glide loads the posters and Shimmer fills the gap while data arrives.

  3. My list, with ratings

    Each title can be marked as watched with a star rating (half stars included) or sent to the pending list. “My watched films” can be sorted by rating or by date, so I remember what I liked most and what I watched last.

  4. An API of my own

    What you save doesn't just stay on the phone: it goes to a REST API I wrote in Flask, with login and its own SQLite database. At first it only worked on my home wifi.

  5. Taking it out of the house

    Today the API runs in a Docker container on my server, published with its own subdomain and HTTPS certificate. The app works the same on wifi or mobile data, wherever I am.

Problems I solved

What I learned

It's the app I use to keep track of my films and series. And it taught me to think about the whole journey: what the user sees, the API behind it and the server it lives on.

Next projectHome Lab →