All lab projects

Lab

CouchCinema

A film and TV companion built on TMDb data, with watchlists, ratings and a light social layer. Published in the Google Play Store.

  • Community tab: what everyone together rates and recommends highest
  • Film detail page with your own rating and your friends' rating
  • Library of rated series and individual episodes
  • Detail page of a series
  • Community tab with the highest-rated series
  • Search across films, series and people

Community tab: what everyone together rates and recommends highest

Why I built it

I am a big film fan, and this was my first Flutter project. For something like that I deliberately pick a subject I care about — you learn a thing best on something that actually interests you, not on an exercise someone assigned you.

What I missed in every film app was the same: recommendations from friends. I wanted to see what my mate would suggest, not what an algorithm had lined up for me. Hence the social layer, and hence its deliberately small size.

What the app does

The home screen assembles recommendations from your own ratings — not from whatever is being promoted. Every title carries a rating from 0 to 10 with one decimal, shown as a ring on the poster, so the judgement reads along while you scroll instead of having to be looked up.

Alongside that sits a library of everything you have rated, split into films, series and individual episodes, plus watchlists for what is still outstanding. Search filters by genre, release period and rating status; already-rated titles can be hidden, which shortens the hunt for something new considerably.

An overview by streaming service answers the question that otherwise costs you several apps: what from my list is available where I already subscribe?

The social layer

Deliberately light: you follow other accounts and see their ratings, and that is all. No feed algorithm, no comment section. The profile shows numbers — films rated, series rated, recommendations, following — and nothing else.

A light social layer has one problem: someone new follows nobody, so the very part that promises other people’s opinions starts out empty. That is what the Community tab is for. It shows what everyone together rates, recommends and keeps on their watchlist — and for every score, how many votes it rests on. An average without its sample size is never shown.

How it is built

Flutter and Dart for an interface that behaves the same on Android and iOS, Supabase (Postgres with row-level security) for accounts and data — migrated from Firebase while the app was live, with no cut-over day for users, closing a gap along the way through which other users’ session keys were readable — and TMDb as the source for titles, posters and metadata. The demanding part is not the display but the reconciliation: TMDb returns many fields per title at varying completeness, and a recommendation list is only as good as its worst row.