All projects
Shipped · September 2026 ·
next.jstypescriptpostgresqltailwind

Watchly

A free watchlist web app for movies and series, shared with the people you watch with.


Watchly

Manage your own watchlist - fast, easy, free.

Watchly is a watchlist for everyone who watches together: friend groups, families, couples, or just yourself. It keeps track of what you’ve already watched, what you’re watching right now and what’s next, so the list doesn’t live in an Excel sheet or a forgotten note anymore.


What it is

  • Entries for movies and series. Each entry has a title, platform, priority and due date, and series keep track of every season on its own.
  • Groups. Create a group or join one, and share a watchlist with the people in it. Entries without a group stay private.
  • Three states. Everything is either still to watch, currently watching, or done - and the list sorts itself by that.
  • IMDb search. Search a title on IMDb (via OMDb) and runtime, seasons, poster and plot are filled in for you.

Why it exists

Watching something together sounds simple until nobody remembers whether you already finished season two, or which of the five recommendations you actually wanted to start. Watchly started as a small project in 2024 to fix exactly that, and got a full redesign in 2026.


Core features

FeatureWhat it does
🎬 Movies & seriesOne list for both, with a separate checkmark per season.
👥 GroupsShared watchlists for the people you watch with.
🔎 IMDb searchPick a title and get poster, runtime, seasons and plot automatically.
⭐ PrioritiesLow, medium or high, plus a platform and a due date per entry.
📊 StatsQuick counts of what’s planned, in progress and done.
🔐 Google sign-inOne click to sign in, no separate password.

Vision

  • Keeping track of film series, similar to the seasons of a series.
  • Leaving and managing groups.
  • Recommendations for new movies and series.
  • An Android app.

Technical details

Stack

LayerChoice
FrameworkNext.js 15 (App Router, server components, server actions)
LanguageTypeScript
StylingTailwind CSS, Radix primitives, lucide icons
DatabasePostgreSQL with Drizzle ORM (postgres.js)
AuthBetter Auth - Google sign-in, sessions in Postgres
Validationzod, shared between forms and server actions
DataOMDb API for the IMDb title search

Engineering decisions

  • One validation schema for both sides. The same zod schemas check the forms in the browser and the server actions, so the two can’t drift apart.
  • Reads with access checks in one place. All server-side reads live in a single module that checks who’s asking, and every mutation is a server action.
  • Seasons as an array. Progress is one flag per season (a movie has exactly one), which keeps a series’ progress in the entry itself instead of a separate table.
  • Migrations on startup. Pending migrations run when the server starts. If the database can’t be reached, startup fails instead of serving the app on an outdated schema.

Get & use Watchly

Use it

Open watchly.ntrapp.net and sign in with Google.

First run

  1. Add your first entry - search it on IMDb to fill in the details.
  2. Create a group, or join one, to share a watchlist.
  3. Tick off seasons as you go; finished entries move to the bottom.

Watchly - your watchlist, shared.