Tapisode
- Type
- Side project
- Stack
- Next.js, TypeScript, PostgreSQL, Drizzle
- 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

03Decisions
How it is built, and why.
- 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.
- 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
Instant progress
A change is previewed at once with the same rules, then rolled back if saving fails.
- 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.