Bag of Popcorn (BOP) is an iOS application that shows the upcomig movies from The Movie Database (TMDb) Api.
As a mobile engineer you've been tasked with the development of an app for cinephiles and movie hobbyists. This first version (MVP) of the app will be very simple and limited to show the list of upcoming movies. The app will be fed with content from The Movie Database (TMDb). No design specs were given, so you're free to follow your UX and UI personal preferences. However the app should work both in landscape and portrait orientations. The choice of platform (iOS, Android, Xamarin) and development approach is also for you to decide based on previous experience and/or personal interest.
The first release of the app will be very limited in scope, but will serve as the foundation for future releases. It's expected that user will be able to:
- Scroll through the list of upcoming movies - including movie name, poster or backdrop image, genre and release date. List should not be limited to show only the first 20 movies as returned by the API.
- Select a specific movie to see details (name, poster image, genre, overview and release date).
- (Optional) Search for movies by entering a partial or full movie name.
You should see this project as an opportunity to create an app following modern development best practices (given your platform of choice), but also feel free to use your own app architecture preferences (coding standards, code organization, third-party libraries, etc).
A TMDb API key is already available so you don't need to request your own: 1f54bd990f1cdfb230adb312546d765d. The API documentation and examples of use can be found here:
- https://developers.themoviedb.org/3 Feel free to use package/dependency managers (ex: Maven, CocoaPods, etc) if you see fit.
The project source code and dependencies should be made available in GitHub. Here are the steps you should follow:
- Create a public repository on GitHub (create an account if you don't have one).
- Create a "development" branch and commit the code to it. Do not push the code to the master branch.
- Create a "screenshots" sub-folder and include at least two screenshots of the app.
- Include a README file that describes:
- Special build instructions, if any
- List of third-party libraries used and short description of why/how they were used
- Once the work is complete, create a pull request from "development" into "master" and send us the link. We will review your code and might ask you some questions directly on your pull request.
- Alamofire, I used Alamofire because it became the HTTP Requests manager easy.
- SwiftyJSON, I used SwiftyJSON to help me work easily with JSON Objects.
- SDWebImage, I used SDWebImage to do image cache.
- Hero, I used Hero to improve the user experience throught the view animations.
- SwiftNotice, I used SwiftNotice to show alerts with errors and informations messages for users.
- FCAlertView, I used FCAlertView to show alert with internet connection error message for users.