Mobile Assignment CS
This is a placeholder README file with the instructions for the assignment. We expect you to build your own README file.
Instructions
You should build an application using the TheMovieDB API. We have provided an initial application that will help you with fast-tracking app development. It contains the following:
- Class containing baseUrl and API key which is needed to fetch contents from TMDB API.
- Basic implementation of a scrollable list to fetch contents and display them in list format.
- Basic JSON parsing to parse server response and populate details.
- Placeholder RatingView class
UI/UX
Below you can find the links to the layouts you need to follow. You can inspect each view to get the dimensions:
Functionalities
We expect you to implement the following functionalities in the app:
-
List horizontally currently playing movies
- Client API details
- GET https://api.themoviedb.org/3/movie/now_playing?language=en-US&page=undefined&api_key=55957fcf3ba81b137f8fc01ac5a31fb5
- Only display poster images in the horizontal scrolling list view.
- No pagination necessary.
- Client API details
-
Display the most popular movies in the vertical list view, with multiple pages
- Client API details
- GET https://api.themoviedb.org/3/movie/popular?api_key=55957fcf3ba81b137f8fc01ac5a31fb5&language=en-US&page=1
- Use the parameter page to change the list's page.
- Implement the paging mechanism to load a list of movies as the user scrolls down the list.
- Cache movie images, in order to make smooth scrolling.
- Implement the custom RatingView.
- Animation is not necessary.
- Use Yellow tint for movie ratings less than 50% and Green for 50% and above.
- Each list item will contain the following:
- Poster image
- Title
- Rating
- Duration
- Release date
- Client API details
-
When a user clicks on any movie list item, it will navigate to a detailed screen, with more information about the movie
- Client API details
- GET https://api.themoviedb.org/3/movie/{MOVIE_ID}?api_key=55957fcf3ba81b137f8fc01ac5a31fb5&language=en-US
- Where MOVIE_ID should be replaced with the id of the movie.
- Example: https://api.themoviedb.org/3/movie/464052?api_key=55957fcf3ba81b137f8fc01ac5a31fb5&language=en-US
- Detail screen should contain the following information:
- Poster image
- Use the API as per described: https://developers.themoviedb.org/3/getting-started/images
- Duration
- Title
- Overview
- Release date
- List of genres
- Client API details
Additional Requirements And Restrictions
We expect you to follow this additional requirements and restrictions, as it will be part of how we evaluate your assignment:
- Provide Unit Tests. This is very important for us to evaluate your level of seniority, so please spare some time to spend on developing Unit Tests.
- 3rd party libraries are allowed (except for the rating view). However, do not use any Alpha version of libraries.
- This is not an ordinary assignment. If you notice any strange behavior, you are free to make decisions regarding the implementation or to take things out of scope, as long as your decision can be justified.
- Provide a README.md explaining your approach, which includes the image caching but also the rating view implementation and any other important decision or assumptions you made during development. Also, list all the 3rd party libraries used and the reason why.
- You should follow the layouts provided to develop the functionalities.
- The code of the assignment has to be delivered along with the git repository (.git folder). We want to see your progress. We require a cloud-hosted repository on Gitlab, which MUST be PRIVATE.
- Do not open PRs to the main repository.
- You are free to handle extra requirements, and this will be part of how we evaluate your work.
- The application should be developed in portrait mode only.
- Minimum Supported versions:
- Android - 5.0 +
- iOS - 14.0 +