Using the The Movie Database (TMDB) API, create a React + TypeScript application with the following features:
-
Landing Page:
- Display a list of movies.
- Each movie item should include:
- Poster image
- Movie name
- Release date
- Implement pagination to navigate through different lists of movies.
-
Movie Details Page:
- When a movie is selected from the landing page, navigate to a details page.
- Fetch and display detailed information about the selected movie using a different API endpoint than the landing page.
-
Responsive Design:
- Ensure the application is fully responsive and looks good on different screen sizes.
-
Search Functionality:
- Implement a search bar on the landing page to filter movies by name.
- Update the movie list dynamically based on the search query.
-
Animations:
- Add subtle animations to enhance user experience, such as hover effects on movie items and smooth transitions between pages.
-
Unit Testing:
- Write unit tests for components using a testing library like Jest.
- UI & animation libraries are not allowed.
- Frameworks like Next.js are not allowed.
- Utility CSS classes like Tailwind are allowed.
- Components should be designed to be reusable.
- The solution should provide a README including the following items:
- Brief description of the solution.
- Reasoning behind your technical decisions.
- Trade-offs made, if any.
- Example usage snippet(s).
- Possible future improvements.