About

WatchMike — Your Play Button

WatchMike is a personal "what should I watch tonight?" companion that turns the chaos of streaming into a single play button. It tracks every show and movie you're watching across services, learns your taste from a few taps, surfaces fresh recommendations tuned to your mood and streaming services, and reminds you when new episodes drop — all in a fast, mobile-first, dark-themed experience.

The problem

  • Too many services, too many shows — viewers spend more time browsing than watching.
  • People forget which platform a show lives on (Netflix? Max? Apple TV?).
  • They forget what they've already finished, what's mid-season, and what got cancelled.
  • Generic streaming recommendations don't reflect your actual taste.

The solution

A single, opinionated home screen that answers three questions:

  1. What should I watch right now? — mood- and taste-aware picks.
  2. Where did I leave off? — Up Next + Continue Watching.
  3. What's new for me? — new seasons, new airings, cancellations, upcoming releases.

Core features

Personalized recommendations

TMDb-powered recommender seeded by your favorites and shaped by an adaptive taste signal. Strict filters honor media type, minimum year, mood, English-only, and your streaming services. Mike's Favorites and Mike's Binge Picks rails are hand-curated. A "Tap to Train" sheet refines the signal in real time.

Tracking — a modern DVR

Mark episodes watched, auto-advance to next, finish a whole show in one tap. Statuses: Watching, Wish List, Completed, Dropped, Not Interested. Up Next queue with manual reorder and self-healing data so completed shows never get stuck in your queue.

Library

Tabs for Watching, Wish List, Completed, and Dropped, plus per-show ratings and private notes. A live banner alerts you when tracked shows have been Cancelled or Ended, with amber badges on each affected card and one-and-done series highlighted at a glance.

Reminders & alerts

Upcoming episodes show day-of-week ("Wednesday, May 7"). New season detection across your library. New airings, cancellation alerts, and a What's New feed for upcoming releases — every entry includes description, release date, and where it'll stream.

Where to watch — everywhere

TMDb watch-providers integration puts a "Watch on X" chip on every preview card so you never forget which service a show lives on. Region-aware with flatrate, ads, free, rent, and buy tiers.

Discovery

/discover with persistent URL filters, a What's New hub for upcoming releases, and SEO landing pages like What Should I Watch Tonight and Best Shows to Binge — plus themed binge pages.

Social sharing

Generate shareable snapshots of your library: what you're loving, what you're currently watching, and everything you've binged (with ratings and notes). Public share links you can text to friends.

Auth & cloud sync

Email/password and Google sign-in. Local-first storage with cloud sync for preferences and tracking — works offline, syncs on reconnect. RLS-protected user data.

Show & episode details

  • Full TMDb hydration: backdrops, posters, season/episode counts, runtimes, per-episode air dates and overviews.
  • Total seasons + total episodes on every TV card, plus a status badge (Returning, Ended, Canceled).
  • Every show, movie, and episode displays a description — never a blank card.

Technical highlights

  • Framework: TanStack Start v1 (React 19, SSR, file-based routing).
  • Build & hosting: Vite 7, deployed to the edge on Cloudflare Workers.
  • Styling: Tailwind CSS v4 with semantic OKLCH design tokens.
  • Type safety: Strict TypeScript, type-safe routing, Zod-validated server functions.
  • Data layer: TanStack Query tuned to TMDb update cadence (3–6h stale times).
  • Backend: Lovable Cloud — auth, RLS, Postgres, edge functions.
  • External API: TMDb v4 (Bearer JWT) for catalog, providers, statuses, and episodes.
  • State: useSyncExternalStore for local-first preferences and tracking, with self-healing migrations.
  • SEO: Per-route metadata, sitemap.xml + robots.txt, JSON-LD where applicable.

Architecture wins

  • Server functions keep TMDb tokens server-side; the client never sees secrets.
  • Adaptive signal model treats completed shows and watched movies as positive seeds — even without explicit ratings.
  • Self-healing localStorage migrations for renamed statuses and stale queue flags — zero user-facing breakage as the data model evolves.
  • Strict server-side filter enforcement prevents recommender drift (e.g. movies sneaking into a TV-only feed).
  • Bulk TMDb status fetcher batches /tv/{id} calls to power the cancelled-show banner without N+1 waterfalls.
  • Hydrated catalog has two modes: lightweight (counts only) for grids, full (per-episode air dates) for detail and reminders.