Free and open source

Know what to watch next.

Nextup keeps a list of the TV shows and films you watch. It works out which episode you are up to, counts how far behind you have fallen, tells you when the next one airs, and tells you when a film finally reaches a streaming service you can use. It runs on your own server and it stays there.

The Nextup dashboard. A Next up list shows Shogun, The Day of the Jackal, The Last of Us and Murderbot, each with the exact episode to watch next, a progress bar and a Watched button. A sidebar lists episodes airing soon.
The first screen: every show with an episode waiting, oldest first.

It answers one question well

Most trackers give you a library to browse. Nextup opens on the thing you actually wanted to know, which is what to put on tonight.

Tick an episode, a season, or everything up to here

Every show page lists its seasons and episodes. Mark one as watched, mark a whole season, or pick an episode and mark it along with everything before it. That last one is how you catch up a show you started years ago without clicking forty times.

Episodes that have not aired yet cannot be ticked by accident, and the progress bar counts only what has actually been broadcast, so a show is never quietly "incomplete" because of a special.

The Slow Horses page in Nextup, showing seasons one to five with tick counts, a Mark season watched button on each, and the episode list for season five open.
A month calendar in Nextup, with each day showing the shows that air on it.

See the month, not just tonight

The calendar puts every tracked show on the day it airs. Episodes you have already watched fade back so what is left stands out. If a list suits you better, Coming soon does the same thing over the next two weeks, month, two months or six.

Air dates come from TMDB and refresh on their own twice a day. Shows that have ended are checked far less often, because they are not going to change.

Three buttons, and you are done deciding

Discover shows you what is arriving, and asks one question about each of it. A tick puts it on your list. A question mark parks it on the maybe list. A cross sends it away and it does not come back here.

The Discover films page in Nextup, a grid of film posters each with a tick, question mark and cross button underneath.
Discover, for films reaching streaming in the next month.

Films, filtered to what you can actually watch

The film list asks TMDB for home releases, not cinema ones. So it answers the question a person who does not go to the cinema is actually asking, which is what turns up on a service in the next fortnight. Seven, fourteen, thirty or sixty days ahead, your choice.

A cross does not delete anything. It only hides that title from Discover, so a search still finds it, and one button brings back everything you dismissed if you change your mind.

TV, brand new or already on air

The television list has two modes: series starting for the first time, and everything with an episode going out right now. Anything already on one of your lists is filtered out, so you are only ever looking at things you have not had a view on.

Say yes to a series and Nextup pulls in every season and episode immediately, so it appears in Next up straight away.

Not everything is a commitment

There is a difference between the shows you follow and the ones you have half an eye on. Put the second sort on the Maybe list and they stay out of Next up, out of the calendar and out of Coming soon, so a dozen curiosities do not make it look as though you are twelve episodes behind.

They keep their poster, their network and the date of their next episode, so you can see at a glance whether one has started. When you decide to watch it, one button moves it across and it behaves like any other show.

The Maybe page in Nextup, a grid of posters for shows not currently being followed, each with a Start watching button.
The Films page in Nextup, split into Ready to watch with service names under each poster, and Coming to streaming listing films with their streaming dates.

Films, and when you can actually watch them

A cinema release date is not much use if you wait for things to arrive on a service you already pay for. So Nextup reads the digital, physical and television release dates a film has been given, prefers the UK one, and shows you that date instead.

It also lists which UK services carry a film right now. Subscription, free and ad-supported services are named. Rental and purchase are left out on purpose, because the question is what you can put on tonight without paying for it twice.

The Films page splits into three: ready to watch, coming to streaming, and seen. Anything without a date yet has a button to ask TMDB again.

The rest of it

How much of your life

The dashboard adds up every episode you have ticked off and turns it into days and hours. Read that figure however you like.

A page for every episode

Click any episode title for its still, synopsis, air date, runtime, guest cast and director, with links to the episodes either side.

Who is in it

Show and film pages carry the cast with photographs, the genres, the certificate, who made it, and where to watch it in the UK.

Search that adds in one click

Type a title, press Add, and Nextup pulls in every season and episode from TMDB straight away.

Favourites and an archive

Pin the shows you care about to the top. Park the ones you have finished without deleting what you watched.

Light, dark, and twenty accents

It follows your system by default and you can override it. The accent colour repaints the whole interface.

Your key, encrypted

The TMDB key goes in the Settings page, not an environment file. It is checked against TMDB, then encrypted before it is stored.

Works on a phone

It is a website, so there is nothing to install on a device. The layout reflows down to a small screen.

Nothing leaves your server

This is the part most trackers get wrong, so it is worth being precise about what Nextup does and does not send anywhere.

  • Artwork is fetched once and then served by Nextup itself. Posters are cached in your data directory, so no page in the app ever points your browser at a third-party host.
  • The only outbound calls are to TMDB, made by the server, to look up the shows and films you asked for, to fetch their artwork, and to ask when a film reaches streaming.
  • No analytics, no telemetry, no crash reporting and no third-party scripts, in the app or on this page.
  • No account with us, because there is no us. Nextup has no server of its own to phone.
  • Two cookies, both yours. One keeps you signed in, one remembers whether you chose light or dark. Neither leaves your server and neither tracks anything.
  • One directory to back up. The database, the encryption key and the cached artwork all sit in the folder you mounted.

Getting it running

You need Docker and a free TMDB account. Allow about five minutes.

  1. Make the data directory

    Nextup runs as a normal user inside the container, user ID 1000, so the folder on the host has to belong to that same ID or the app cannot write to it.

    sudo mkdir -p /opt/nextup
    sudo chown -R 1000:1000 /opt/nextup
  2. Start it

    Save this as docker-compose.yml and bring it up. It listens on port 4090 unless you change the left-hand number.

    services:
      nextup:
        image: ghcr.io/lightmorphic/nextup:latest
        container_name: nextup
        restart: unless-stopped
        ports:
          - "4090:8080"
        volumes:
          - /opt/nextup:/data
    docker compose up -d
  3. Sign in and change the password

    Open it in a browser and sign in with admin and nextup. The app will keep telling you off until you change both on the Settings page, which is the idea.

  4. Add your TMDB key

    Make a free account at themoviedb.org, open Settings then API, and copy the API Key for v3 auth. Paste it into the Settings page in Nextup. It is checked against TMDB before it is saved, and encrypted once it is.

  5. Start adding shows

    Search a title, press Add, and use Up to here on the episode you last watched. From then on the front page is a list of what is waiting.

What it deliberately does not do

Worth knowing before you spend five minutes installing it.

  • It does not play anything. No streams, no downloads, no links to either. It is a record of what you watched, wherever you watched it.
  • One person, one list. There is a single account. A household sharing it shares one watch history.
  • There is no import yet. If you are coming from another tracker, your history has to be re-entered. The season and "up to here" buttons make that quicker than it sounds.
  • No notifications. It will not email you or push to your phone when an episode airs. You look at the calendar.
  • It is not hosted for you. There is no signup page and no service to join. You run it yourself or you do not run it.

A few more screens

Questions people ask

Does Nextup play or download anything?
No. Nextup is a notebook, not a player. It records what you have watched and tells you what is next. It holds no video, links to no streams and downloads nothing except artwork from TMDB.
Do I need a TMDB API key?
Yes, and it is free. Make an account at themoviedb.org, open Settings then API, and copy the API Key for v3 auth. You paste it into the Settings page inside Nextup, where it is stored encrypted.
Can more than one person use it?
No. Nextup has one account and one watch history. Two people sharing it would share a single list. If you want separate lists, run a second copy with its own data directory.
What does Nextup cost?
Nothing. It is released under the GPL version 3, so you can run it, read it and change it. There is no paid tier and no hosted version to buy.
Where is my data kept?
In one directory on your own server. A single SQLite database holds your shows and watch history, alongside the encryption key and the cached artwork. Backing up that directory backs up everything.
Can I keep a list of shows I might watch one day?
Yes, that is the Maybe list. Anything on it keeps its poster and its next air date but stays out of Next up, the calendar and Coming soon, so it never makes you look behind on something you never started. One button moves it across when you decide to watch it.
How does it know when a film reaches streaming?
TMDB records several release dates for a film, including the digital, physical and television ones. Nextup reads those, prefers a UK date, and falls back to Ireland then the United States. It also lists which UK subscription, free and ad-supported services carry the film, using the JustWatch data TMDB publishes. Rental and purchase are left out.
What happens to something I cross off in Discover?
It is hidden from Discover, not deleted. Nextup remembers the decision so it never asks you twice, but the title still appears in a search, and a single button on the Discover page brings back everything you have dismissed.
Is there information on individual episodes?
Yes. Every episode has its own page with the still image, the synopsis, the air date, the runtime, the rating, the guest cast and the director. Episode titles throughout the app lead there, and each page links to the episodes either side of it.
How do I update it?
Run docker compose pull, then docker compose down and docker compose up -d. A plain up -d will not fetch a newer image on its own.
What is it built with?
Python and Flask, with SQLite for storage and plain CSS for the interface. There is no JavaScript framework and no build step. The whole thing is small enough to read.