Goal: Transform YMovies from a movie browser into a fully-featured, production-grade streaming companion that users actively rely on.
- Fix Settings page auth — Settings API calls don't send
AuthorizationBearer token; preferences silently fail to persist for logged-in users - Sync collections to server — Custom user collections (created in MyList) only live in localStorage; they vanish on device switch or cache clear. Add a
collectionstable and API endpoints - Fix broken notification toggles — Settings page has notification preferences UI but zero backend; either remove the toggles or build the system
- Implement the hybrid recommender —
hybrid_recommender.pyis an empty file. Wire up the planned collaborative + content-based hybrid engine - Enable OnboardingTutorial — Component exists but is commented out in the router. Polish and activate it for first-time users
- Trailer auto-play on detail pages — Embed YouTube/TMDB trailers inline with a full-width cinematic player (not just a link)
- "Where to Watch" integration — Use TMDB's
/watch/providersendpoint to show streaming availability (Netflix, Hulu, Prime, etc.) per region with deep links - Watch progress tracking UI — The DB stores
watchProgress(0-100%) andlastStoppedAtbut there's no UI for it. Add progress bars on cards and a "Continue Watching" row on Home - Episode tracking for TV shows — Track per-episode watch status (watched/unwatched), show next unwatched episode, mark seasons as complete
- In-app star rating flow — DB has
watch_history.rating(1-5) but no UI to rate. Add a rating modal on detail pages and after marking as "watched" - User micro-reviews — Let users write short reviews (280 chars) stored server-side, displayed alongside TMDB reviews
- Rating-based recommendations — Feed user ratings into the recommendation engine for better personalization
- Advanced Discover page — Dedicated
/discoverpage with multi-filter builder: combine genre + year range + rating range + language + runtime + keywords + cast/crew + streaming provider - "Surprise Me" random pick — Button that picks a random movie/show matching user taste profile, with a fun reveal animation
- Mood-based browsing — "I want something funny and light" / "Dark and intense" / "Feel-good family" — map moods to genre+keyword combos
- Collections/curated lists — Staff-curated or AI-generated themed lists: "Best Sci-Fi of the 2010s", "Oscar Winners You Missed", "Under 90 Minutes", "Based on True Stories"
- People pages —
/person/:idpage for actors/directors with full filmography, bio, photos, and "more from this person" recommendations - Network/Studio pages — Browse content by production company or TV network (HBO, A24, Marvel Studios, etc.)
- Command palette (⌘K / Ctrl+K) — Global quick-search overlay using the existing
cmdkcomponent (already in UI primitives but unused). Search movies, TV, people, genres, and app pages - Voice search — Web Speech API integration for hands-free search
- Search history & saved searches — Remember recent searches, allow pinning frequent searches
- Infinite scroll on browse pages — Replace pagination with smooth infinite scroll + skeleton loading
- Keyboard navigation — Arrow keys to browse movie sliders, Enter to select, Escape to go back (accessibility win)
- Parallax hero banners — Subtle depth effect on hero images as user scrolls
- Card hover previews — On desktop, hovering a movie card expands it (Netflix-style) showing rating, year, genres, and a mini description
- Smooth shared element transitions — When clicking a movie card, animate the poster into the detail page position (View Transitions API or Framer Motion
layoutId) - Skeleton loading v2 — Match exact card/banner dimensions for zero layout shift (CLS = 0)
- Micro-interactions — Subtle animations on favorite/watchlist toggle (heart burst, bookmark slide), rating stars (fill animation), and toast notifications
- Genre preference onboarding — On first sign-up, show a grid of genres with poster previews; user picks 3-5 favorites to bootstrap recommendations
- "Not Interested" button — Let users dismiss recommendations they don't want; feed this negative signal back into the engine
- Taste profile visualization — On Profile page, show a radar chart or genre wheel of the user's taste DNA based on their ratings and history
- Time-aware recommendations — Suggest shorter content on weeknights, longer on weekends. Suggest "morning vibes" or "late night" content based on time of day
- Public user profiles — Optional public profile showing favorites, reviews, and stats (with privacy controls)
- Activity feed — See what friends rated, added to watchlist, or reviewed
- Follow system — Follow other users to see their activity and lists
- Shareable watchlists — Generate a share link for any collection/watchlist; recipients see it read-only or can clone it
- Watch parties (async) — "Watch Together" lists where a group agrees on a movie and everyone marks when they've watched it
- Discussion threads — Per-movie/show discussion boards for spoiler-tagged conversations
- Reactions on reviews — Like, helpful, funny, etc. reactions on user reviews
- Social sharing cards — Beautiful Open Graph preview cards when sharing movies/shows on Twitter, Discord, etc.
- Natural language search — "Movies like Inception but more emotional" or "90s action movies with a female lead" — use an LLM to translate natural language into TMDB filter queries
- AI movie summaries — Generate spoiler-free, personalized "why you'll like this" blurbs based on user taste
- Watch order assistant — For franchises (MCU, Star Wars, LOTR), show recommended watch order (chronological vs. release) with visual timeline
- Smart notifications — "A sequel to a movie you loved is releasing next month" / "A new season of [show] just dropped"
- Conversation-style recommendation chat — Chat UI where users describe what they're in the mood for and get curated suggestions in real-time
- Year in review / stats dashboard — Total movies/shows watched, hours watched, top genres, most-watched decade, rating distribution, monthly activity heatmap
- Genre diversity score — Gamify exploration: "You've watched 80% action this month — try a documentary!"
- Rating patterns — Show the user how their ratings compare to TMDB averages (are they a generous or tough critic?)
- Watchlist aging alerts — "You added [movie] 6 months ago and still haven't watched it"
- Personal milestones — "You just watched your 100th movie!" with shareable achievement cards
- Upcoming releases calendar — Monthly calendar view of upcoming movies and TV seasons, filterable by genre
- Release reminders — Set a reminder for an upcoming movie; get notified (email or push) on release day
- Box office tracker — Show current box office numbers for movies in theaters
- New on streaming — "New on Netflix this week" / "Leaving Hulu soon" sections
- PWA (Progressive Web App) — Installable on mobile, offline-capable for browsing cached content, push notifications
- Responsive redesign audit — Ensure every page is pixel-perfect on mobile, tablet, and desktop
- Offline watchlist — Cache watchlist data so users can browse their list without internet
- Unit tests — Jest + React Testing Library for components (currently
echo "No tests specified yet") - API integration tests — Supertest for all Express endpoints
- E2E tests — Playwright or Cypress for critical user flows (sign up → browse → add to watchlist → rate)
- Recommendation engine tests — Validate recommendation quality with snapshot tests and diversity metrics
- CI pipeline — GitHub Actions: lint → typecheck → test → build on every PR
- ESLint + Prettier setup — Currently
echo "Linting passed". Add real ESLint config with React, TypeScript, and accessibility rules - Strict TypeScript — Enable
strict: truein tsconfig and fix all resulting type errors - Error monitoring — Sentry integration for both client and server
- Structured logging — Replace
console.logwith Winston/Pino structured JSON logs - API rate limiting — Rate-limit public endpoints to prevent TMDB API key abuse
- Input validation — Zod validation on all API endpoints (some endpoints trust raw user input)
- Image optimization — Lazy-load all TMDB poster/backdrop images with blur-up placeholders (use
loading="lazy"+ LQIP) - Bundle splitting — Code-split each page route; current bundle likely ships everything
- Server-side caching layer — Redis or in-memory LRU cache for TMDB API responses (reduce latency + avoid rate limits). Current 30s TTL on recommendations is too aggressive
- Database query optimization — Add indexes on
watchlist_items(userId),watch_history(userId),favorite_items(userId)if missing - Prefetch on hover — When hovering a movie card, prefetch the detail page data so navigation feels instant
- Service Worker caching — Cache static assets and TMDB configuration data for faster repeat visits
- Admin dashboard —
requireAdminmiddleware exists but no admin UI. Build/adminwith: user management, feature flags, recommendation tuning, system health - Feature flags — LaunchDarkly or simple DB-based flags to toggle features without deploys
- Content moderation — Review queue for user-generated reviews before public display
- Analytics dashboard — Track popular searches, most-added movies, recommendation click-through rates
- Collections table —
user_collections(id, userId, name, description, isPublic, items JSONB, createdAt, updatedAt) - User ratings table — Separate from watch_history for cleaner queries:
ratings(userId, mediaId, mediaType, rating, createdAt) - User reviews table —
reviews(id, userId, mediaId, mediaType, content, spoiler, likes, createdAt) - Follows table —
follows(followerId, followingId, createdAt) - Notifications table —
notifications(id, userId, type, payload JSONB, read, createdAt) - Migration system — Switch from
drizzle-kit pushto proper versioned migrations
- Fix P0 bugs (settings auth, collection sync, notification toggles)
- ESLint + Prettier + strict TypeScript
- "Where to Watch" providers on detail pages
- Star rating UI flow on detail pages
- Continue Watching row on Home (use existing watch_history data)
- People pages (
/person/:id) - Advanced Discover page with multi-filter builder
- Command palette (⌘K) for global search
- Card hover previews (Netflix-style expand)
- Genre preference onboarding for new users
- User micro-reviews + display on detail pages
- "Not Interested" dismissals + feedback loop
- Taste profile visualization on Profile
- Year-in-review stats dashboard
- Upcoming releases calendar
- Public profiles + follow system
- Shareable watchlists
- Activity feed
- Social sharing cards (Open Graph)
- Mood-based browsing
- Complete the hybrid recommender (Python)
- Natural language search
- Smart notifications system
- "Surprise Me" random pick
- Watch order assistant for franchises
- Unit + integration + E2E test suite
- CI/CD pipeline
- Sentry error monitoring
- Performance optimization pass (images, bundle split, caching)
- PWA conversion
Last updated: February 12, 2026