Movie_Search/README.md

78 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);