Welcome to the Movie App technical challenge! This document outlines the requirements and challenges for our upcoming pair programming session.
This 1-hour session is designed to observe your approach to:
- Problem-solving: How you break down and prioritize tasks.
- Communication: How effectively you verbalize your thought process and collaborate.
- Code Quality: Your ability to write clean, maintainable, and efficient Flutter code.
- Decision Making: Your rationale for choosing specific solutions and patterns.
- Adaptability: How you handle unexpected issues time pressure.
- Documentation Review: Your inclination to seek out and review documentation/API specs.
- Testing: How you verify the correctness of your changes.
We're looking for effective collaboration and a clear understanding of your thought process throughout the session.
- Pre-Clock: You'll have time to ask questions and review this document before the 1-hour clock starts.
- During Session: We'll be pair programming. Feel free to ask questions, discuss your approach, and use online resources for reference (e.g., Flutter documentation, Stack Overflow).
- No AI Assistance: Please don't use AI tools or disable theses plugins(e.g., ChatGPT, Gemini Copilot) during the session.
You'll be provided with a basic Flutter project. Here are the overview of the project structure:
flutter_movie_app/
├── lib/
│ ├── main.dart
│ ├── screens/
│ │ ├── movie_list_screen.dart
│ ├── models/
│ │ ├── movie.dart
│ ├── services/
│ │ └── movie_service.dart
├── pubspec.yaml
└── README.md
In this test, we are using the api from themoviedb.org. To help you get started, we have provided a MovieService class that handles the API calls. Here are the details:
- To connect to API, we need to login anonymously using API key which already provided in the
MovieService
. MovieService
has agetMovies
method that returns a list of movies.MovieService
has agetMovieDetail
method that returns a movie detail.
If you need more information, you can find the API documentation here.
The following challenges are designed to be completed within the 1-hour session.
- Apply any State Management of your choices (e.g., Provider, Riverpod, BLoC/Cubit, GetX, etc.)
- Integrate Movie List Screen with
/movies
endpoint to show both title and thumbnail. - Create a Movie Detail Screen with
/movies/{id}
endpoint. The minimum requirement is to display title, thumbnail, sypnosis, and review_rating
- Implement a favorite toggle for movie list items. This should persist locally and be loaded when the app starts
- In Movie List screen implement search movie with
title
feature.