![]()
31 May 2026 Last night I built an app from my phone, while watching a movie. By the time the credits rolled it was online, and I was already using it.
The movie wasn't great. Hence the side project.
The itch
Picking what to watch is something I'd wanted to fix for years. I'd built lists on IMDb and TMDB, tried a handful of apps. Nothing ever did exactly what I wanted.
So, mid-movie, I started building the thing I actually wanted: a private movie tracker with my own taste baked in. I call it Movee.
Building it from the couch
The trick is that the project lives on my computer at home. I just drive it remotely from my phone.
I opened Claude on my phone, described what I wanted in plain English, and the agent did the rest: wrote the Python, designed the database, generated the pages, and pushed it live. Every change I asked for rebuilt and redeployed the site automatically, so the version on my phone was always current.
Not a single line of code written by me. I described behaviour; the agent wrote and shipped the implementation.

What it does
By the end of the film I had a working app:
- 2,000+ movies preloaded, with all the details (director, cast, runtime, genres, posters, age ratings).
- Filters and watched-lists to track what I've seen and rate it 1-10.
- AI recommendations, tuned for three contexts: me solo, me and my son, or a family Friday night.
The recommendations are the part I care about most. They lean on my own ratings and favourite directors, and stay in a separate "to watch" list per context, so the family picks never get mixed up with mine.
02 Nov 2026 5 months on, I still open Movee every time we pick a film, and it has grown a lot since that evening:
- 3,022 films now, 1,046 of them watched and rated by me. Whole filmographies of my favourite directors and actors, the TMDB top lists, the Marvel and DC universes as 2 collections, and 124 French classics.
- 1 film, several people. A film can be planned for me, for my wife, for each of my kids and for the family, all at once. Each person has their own rating.
- The family joined in. Since October, Movee syncs both ways with Familee, our family app, every 15 minutes (see Familee: my own family app for iPhone). Everyone adds what they want to watch, marks what they've seen and rates it from their phone. Their ratings stay private: the site never shows them.
- AI picks stay suggestions. The AI recommends a film for a person, with a reason. Only a human moves it to a plan. The code enforces that: the import step ignores any other field the AI sends.
- Where to watch. Each film shows the streaming services that carry it in Germany, and a chip when I own a copy.
- My agents can use it. Since late October every command answers in JSON, so NicAI can add, rate or list films inside a task.
All features
Library
- 3,022 films from TMDB. Director, cast, runtime, genres, posters, country, release date and age rating, fetched by title.
- Bulk imports. By title list, TMDB top lists, director, actor, collection, or the Marvel and DC universe rosters. Only released feature films get in.
- Collections. Franchises merged into 1 collection (every Batman film is "Batman"). A collection needs at least 2 films.
- French titles. French films show under their original French title.
- Age ratings. The French classification first, the US one as fallback.
- Where to watch. German streaming services and Apple TV rent or buy, plus a chip for films I own.
Watching and rating
- Ratings per person. 1 to 10, 1 rating per family member. The site only shows mine, and my son's on his own page.
- Plan for. A film can be planned for several people at once. A human sets it, never the AI.
- Seen by. Who has seen each film, so a family night avoids repeats.
- Rating shorthand. I type
Title (year): 8to Claude, and the film is marked watched, rated, and taken off the to-watch lists.
Recommendations
- AI picks per audience. Me alone, the family, and each person, each with a reason, badged "AI" until I approve one.
- Taste profile. My ratings, favourite directors and genres, and a list of hard exclusions.
- No API bill. The picks run inside a Claude Code session on my subscription.
Pages and apps
- Private static site. A watched library, 1 to-watch page per audience, and a page with every film, with country and platform filters.
- Local editor. A page on my Mac to edit any field, add films and rebuild.
- My son's panel. A locked-down local page where he adds films to his list, marks what he's seen and rates it. It can't touch anyone else's plans.
- Familee sync. Both ways, every 15 minutes, with the family app on our phones.
- Agent CLI.
movee <command> --json:describe,status,list,add,rate,watch,planand more. Deleting a film needs--yes.

Under the hood
I asked for a stack that is boring and durable on purpose:
- SQLite as the single source of truth, one row per film. No server database to babysit.
- TMDB for metadata, so I never type a title or hunt for a poster.
- A small Python build step that renders the database into a static site (just HTML, CSS and a little JavaScript). Static means fast, cheap, and nothing to break.
- Deployed to a private, password-protected site, with the build and upload triggered automatically on every change.
One detail I like: the AI recommendations run inside the coding session itself, on my existing subscription. No separate AI service to wire up, no per-request bill, no extra key to manage.
02 Nov 2026 The family sync pulls first, then pushes. Familee's server refuses to overwrite a change from a phone that the Mac hasn't pulled yet, so nobody's "want to watch" gets lost. Each film carries an update time, and only the films that changed since the last push go up, in batches of 200.
Why this matters beyond movies
This was a personal itch. But the capability behind it is the real story.
With AI you can now build the documents, dashboards and custom internal tools that used to take days or weeks, or never got built at all. The bottleneck was never the idea. It was the time and the hands to make it real. That part barely takes effort now.
I've already used Movee more than every other solution I'd tried, combined. It took one evening and zero code from me.
Still amazed, every single day. 🚀