Skip to content
Type
Side project
Stack
Next.js, TypeScript, PostgreSQL, Drizzle
Live
Preview (opens in a new tab)
Source
GitHub (opens in a new tab)

01What it is

A fast, phone-first tracker for movies and TV shows.

Tapisode keeps track of what you are watching, without social feeds, ratings or noise. One tap on +1 counts the episode, and you can undo it. Home opens on your next episode and lists what airs in the next seven days.

There are three states and nothing else: watching, watchlist, complete. The rules keep the state and the episode in step, so a show that is still airing never counts as complete. See where a title streams in your country and filter your lists by service.

Press Ctrl K to search, and see your episode count, hours and a shareable stats image. A demo session starts with a ready-made list, no account needed, and the app installs on a phone.

02Screenshots

Desktop and phone

Tapisode on a desktop and a phone

03Decisions

How it is built, and why.

  1. 3.1

    Rules independent of the catalog

    The rules are pure functions that import nothing outside the domain. The movie catalog sits behind a port, so a fake provider can replace it in tests.

  2. 3.2

    No lost updates

    One function decides every change, and each write checks the state the user saw. Two devices, or a double tap, cannot overwrite each other. Property tests cover it.

  3. 3.3

    Instant progress

    A change is previewed at once with the same rules, then rolled back if saving fails.

  4. 3.4

    Checked in CI

    axe finds no violations on any screen, tap targets are at least 44 px on a phone, and Lighthouse accessibility, best-practices and SEO stay above 0.9.