A personal movie and TV show tracking app with smart recommendations. UI generated with Claude Code.
- Track movies and TV shows you want to watch
- Mark items as watched and rate them
- Multi-user support (cookie-based, no auth)
- Smart recommendations based on your watch history
- "Watching with" mode for group recommendations
- Autocomplete search powered by TMDB
- Backend: Go with Chi router
- Database: SQLite
- Frontend: HTML templates, Tailwind CSS, DaisyUI
- APIs: TMDB (search, recommendations), OMDB (ratings)
- Clone the repo
- Copy
.env.exampleto.envand add your API keys: - Run the server:
go run . - Open http://localhost:8080
The engine combines three data sources from TMDB for each watched item:
- Similar titles - Movies/shows with similar themes, genres, and style
- TMDB recommendations - Collaborative filtering based on user behavior
- Keyword matching - Boosts candidates that share keywords appearing in 2+ watched items
Each candidate accumulates points:
- +1 for appearing in a similar titles list
- +1 for appearing in a recommendations list
- +1 for each shared keyword (if that keyword appears in 2+ watched items)
Items need a minimum score of 2 to be included. Final ranking multiplies the score by TMDB popularity.
Results are sorted into four buckets:
| Category | Criteria |
|---|---|
| Popular | TMDB popularity >= 30 |
| Newest | Released in last 2 years |
| Hidden Gems | Popularity < 30, but score >= 2 |
| Classics | 15+ years old with popularity > 10 |
When using "Watching with" to get recommendations for multiple users:
- Items are weighted by how many users watched them (shared favorites score higher)
- Anything already on anyone's watchlist or watched list is excluded
- Concurrent API calls with goroutines
- 1-hour TTL cache for TMDB responses
- Semaphore limits parallel keyword fetches to 20