Go to file
2024-05-24 15:51:51 -04:00
movie-search wip - got context working with favorites page using interleaving 2024-05-24 15:51:51 -04:00
README.md wip - basic movie search and view available. Need to add working context and tests 2024-05-24 02:22:31 -04:00
sampleList.json wip - basic movie search and view available. Need to add working context and tests 2024-05-24 02:22:31 -04:00
sampleMovie.json wip - basic movie search and view available. Need to add working context and tests 2024-05-24 02:22:31 -04:00

A simple app that allows users to search for movies by title, review the search results and navigate to a movies detail page.

It contains:

  • Navbar

  • A page to search for movies by title:

    • SearchBar component:
      • Input for Title (Year & Plot too?)
      • Submit button
      • Cear button
    • List of results - paginated so we might need a pagination component:
      • Title
      • Year
      • Type (Filter out "series"?) - hidden ?
      • Poster
      • imdbID - hidden Error Handling component
  • A page for individual movie details:

    • Movie component:
      • Title
      • Year
      • Rated
      • Released
      • Runtime
      • Genre
      • Director
      • Writer
      • Actors
      • Plot
      • Language
      • Country
      • Awards
      • Poster
      • Ratings: [ { Source } ]
      • Metascore
      • imdbRating
      • imdbVotes
      • imdbID
      • Type
      • DVD
      • BoxOffice
      • Production
      • Website
      • Response

External API Docs: https://www.omdbapi.com/

Built on: Next.js Server side rendering for list & movie details to hide api token - Could possibly use Route Handler

Switched to Tailwindcss for styling. Was using chakra ui components but it isn't server-side render friendly

Using React Context because Redux is cool for a good number of things, but when built correctly - React Context is powerful enough for most apps. It can be layered if need be, but for this example we will stick with a simple context:

Since we're using server side rendering for pages that fetch data, we don't need a lot of state management. We can implement Context in a client component for managing "Favorites" for a user if we'd like this might look like:

favorites/page.tsx

cosnt FavoriteContext = createContext({ favorites, addFavorite })

const FavoriteProvider = ()=>{ // local state management return (

) }

const { searchResults } = useContext(FavoriteContext);