Welcome to the Movie App technical challenge! This is a take-home assignment designed to assess your Flutter development skills.
This assignment is designed to evaluate:
- Problem-solving: How you break down and prioritize tasks.
- Code Quality: Your ability to write clean, maintainable, and efficient Flutter code.
- Decision Making: Your rationale for choosing specific solutions and patterns.
- Best Practices: Your understanding of Flutter development patterns and architecture.
- Documentation Review: Your ability to work with API documentation and external resources.
- Testing: How you verify the correctness of your implementation.
We're looking for well-structured code and thoughtful implementation decisions.
This repository contains a basic Flutter project to get you started. Here's 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. MovieServicehas agetMoviesmethod that returns a list of movies.MovieServicehas agetMovieDetailmethod that returns a movie detail.
If you need more information, you can find the API documentation here.
Before we begin, Let's give you some context to keep in mind.
- You are building an application that will work with multiple squads. Make sure to make make the app scalable and maintainable.
- You are not required to implement test cases. Still, we would love to see if you can show us how you will do with some samples.
Please complete all of the following requirements:
- Integrate Movie List Screen with
/moviesendpoint to show both title and thumbnail. Note that the list should be able to do infinite scrolling. - Create a Movie Detail Screen with
/movies/{id}endpoint. It should show both details of movie and credits. You can get credits data from/movies/{id}/credits - Implement a favorite toggle for movie list items. This should persist locally and be loaded when the app starts. User should be able to see this on both list page and detail page.
- In Movie List screen implement search movie with
titlefeature. The search result should show in real-time
- Push your code to a public GitHub repository. If you cannot do the public repo, please send as zip file instead.
- README.md should be include in the repository. This should include item belows.
- How to run your app?
- What is your app architecture? Why do you chosse this design?
- Which state mangement are you using? Compare with some of other frameworks that you had known or researched.
- How you do error handling?
- What you want to improve further if you had a chance to continue?
- Anything you want to add to explaing your work.
