From Idea to Interface: Building MJBY Movie Network – A Developer’s Journey

Jul 09 • 3m read time

Hi everyone! I’m excited to share with you the development story behind my latest project: MJBY Movie Network — a minimalist, feature-rich web app for movie and TV show enthusiasts built with Next.js, Tailwind CSS, and powered by the TMDb API.

Whether you're here to get inspired or curious how a full-stack movie discovery app comes to life, here’s a full behind-the-scenes look from concept to current version.


🎬 The Idea

The original goal was simple:
Create a modern movie browsing platform similar to Netflix UI, with sections for popular, top-rated, and upcoming titles — and eventually, make it smarter with filtering, ratings, search, and more.

🛠️ Tech Stack Chosen

  • Framework: Next.js 15 App Router
  • UI Library: Tailwind CSS
  • API: The Movie Database (TMDb)
  • State Management: Zustand
  • Slider: Keen Slider
  • Notifications: Sonner
  • Video Player: Youtube API

✅ Phase 1: Core Features & UI

  • Netflix-style Carousel using custom scroll snapping
  • Reusable Card Components for movies and TV shows
  • Dynamic Routes for /movie/[id] and /tv/[id] with detail pages
  • Responsive Grid Layout
  • Dark Mode UI (default)
  • TMDb Image CDN Integration for posters and backdrops

⭐ Phase 2: Ratings & Auth Features

  • Added TMDb Guest Ratings:
    • Users can now rate movies via guest session ID
    • Cooldown logic with animated CooldownBar component
    • Toasts via Sonner with success messages
  • Integrated TMDb OAuth Login:
    • Full auth flow: token → approve → session → username & avatar
    • Zustand store to persist user session and data
    • Automatically fetches and highlights user-rated movies
  • Differentiated between guest and authenticated user ratings on each movie detail page
  • Built a reusable Star Rating Component with tooltip support and rating animation

❤️ Phase 3: User Favorite, Watchlist & Ratings

This latest update adds more personalized user interaction features to MJBY Movie Network:

  • 💖 User Favorites
    Logged-in users can now mark any movie or TV show as a favorite. These are synced with TMDb’s API and saved to your account.
  • 📺 Watchlist Support
    Users can now add titles to their Watchlist, making it easy to queue up shows and movies for later viewing.
  • 🎯 Rating Sync with Authenticated TMDb Users
    • When logged in via TMDb, your personal ratings are now fetched and highlighted across the UI.
    • You can see your previously rated movies instantly on detail pages.
    • Combined view for Guest + Authenticated Ratings ensures seamless transition between sessions.
  • Zustand store now tracks:
    • Authenticated session
    • TMDb account ID
    • Favorite & Watchlist status per title
  • Built-in visual feedback:
    • Favorite/watchlist button icons reflect real-time changes
    • Toast notification when you rate, favorite, or watchlist an item

✨ Phase 4: UI/UX Improvements

  • Added Skeleton Loaders for movie cards
  • Built a Shimmer Loading Effect
  • Added Gradient Mask on CooldownBar for sleek look
  • Integrated Onboarding Modal to welcome new users
  • Minimalist visual polish using Tailwind's custom utility classes

🎬 Phase 5: TV Shows and Episodes

  • Implemented TV Shows page
  • Dynamic Routes for /tv/[id]/[season] with detail pages
  • Supported TV series and episodes results

🔍 Phase 6: Search & Discoverability

  • Implemented Global Search at /search?q=your+query
  • Integrated Debounced Input using useSearchParams()
  • Supported both movie and TV series results


🚀 What’s Next for MJBY Movie Network App?

  • Genre Filtering
  • Social sharing features
  • Infinite scrolling & lazy loading
  • TMDb Reviews & Comments
  • Localization & Language switcher

👋 Final Thoughts

MJBY Movie Network started as a learning exercise, but it has grown into a powerful, full-featured movie discovery tool. If you want to see it in action or just explore the code and UI:

👉 Visit: https://mjbymovienetwork.vercel.app
💻 Built with love using Next.js & TMDb API

Feel free to leave feedback or contribute ideas!