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:
- What should I watch right now? — mood- and taste-aware picks.
- Where did I leave off? — Up Next + Continue Watching.
- 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.
