Build a movie app using React, TypeScript, Vite, and Vitest. The goal is to assess your ability to build a simple front-end app with solid engineering practices.
- Download the provided front-end template. It includes:
- Basic CSS with Tailwind
- HTML structure
- React + Vite setup
- You'll also receive a backend app to run locally. This backend will expose the API endpoints needed for this application.
- Integrate the backend API.
- Fetch a list of movies.
- Handle loading and error states properly.
- Render the movies in a clean and responsive layout.
- Each movie should show at least:
- Poster
- Title
- Release year
- Genre(s)
- Add the ability to filter movies by category (e.g., "Action", "Comedy", etc.).
- The categories come from the API.
- Implement a search bar to search movies by title or actor name.
- The search should update the results in real time.
- Allow users to bookmark their favorite movies.
- Bonus points if:
- Bookmarks persist across page reloads (e.g., use
localStorage). - There is a separate view or route for viewing only bookmarked movies. PS: There no backend APIs for bookmarks.
- Bookmarks persist across page reloads (e.g., use
- Use Vitest to write at least 3 unit tests:
- One for the data-fetching logic.
- One for the search functionality.
- One for the filtering feature.
We’ll assess your submission based on:
- Clean, readable, and maintainable code.
- Proper use of TypeScript.
- Clear separation of concerns (components, hooks, utilities, etc.).
- Correct implementation of the requested features.
- Bonus for implementing routing and persistent bookmarks.