Skip to content

teresamychu/watchlist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Watchlist

A personal movie and TV show tracking app with smart recommendations. UI generated with Claude Code.

Features

  • 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

Tech Stack

  • Backend: Go with Chi router
  • Database: SQLite
  • Frontend: HTML templates, Tailwind CSS, DaisyUI
  • APIs: TMDB (search, recommendations), OMDB (ratings)

Running Locally

  1. Clone the repo
  2. Copy .env.example to .env and add your API keys:
  3. Run the server:
    go run .
  4. Open http://localhost:8080

Recommendation Algorithm

Signals

The engine combines three data sources from TMDB for each watched item:

  1. Similar titles - Movies/shows with similar themes, genres, and style
  2. TMDB recommendations - Collaborative filtering based on user behavior
  3. Keyword matching - Boosts candidates that share keywords appearing in 2+ watched items

Scoring

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.

Categories

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

Group Mode

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

Performance

  • Concurrent API calls with goroutines
  • 1-hour TTL cache for TMDB responses
  • Semaphore limits parallel keyword fetches to 20

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors