iOS Bootcamp Project 2021
Thank you for participating in the iOS Bootcamp 2021!
This README file contains the instructions to complete the capstone project for the bootcamp.
Table of Contents
Introduction
This iOS Bootcamp is looking to improve your iOS Technical skills.
At the end of the course, you will have gained enough experience to recall the essence of several techniques related to the skills covered in the bootcamp, apply them correctly, and even provide shortcuts and quick ways for accomplishing your tasks.
- iOS SDK
- Swift
- Presentation Patterns
- Dependency Injection
- Networking
- Software Design Principles
- Debugging
- Persistence Layers
- Mobile App Release Management
Additionally, you’ll understand how the technologies internally work and what are the dos and don'ts.
The Project
The purpose of this project is for you to demonstrate your iOS skills.
This is your chance to show off everything you've learned during the bootcamp and to improve your Technical skills.
You will build and deliver a whole iOS application on your own.
We don't want to limit you by providing some fill-in-the-blanks exercises. Instead, we want you to build it from scratch.
We hope you find this exercise challenging and engaging.
The goal is to build a TheMovieDb
client app.
*NOTE: Use
f6cd5c1a9e6c6b965fdcab0fa6ddd38a
as the api_key (Include this in your API calls!)*
You should use this API just as a guide and as a trigger for your own ideas. It's not mandatory to use an especific UI component
. It is YOUR project and you can be creative in the way you build it.
Requirements
These are the main requirements for your deliverable evaluation:
- Use all that you've learned in the course:
- Swift best practices
- Design Principles
- SOLID
- YAGNI
- DRY
- KISS
- Design Patterns
- Architectures
- Dependency Injection
- Unit Test
- Implement Unit Tests Coverage (~70%)
Keep the use of 3rd party libraries to the minimum, especially the ones related to the topics covered in the course.
For example, you can use an image downloader framework (such as Kingfisher) if that makes you feel more comfortable and move faster. However, we still want you to develop and deliver meaningful styled-components.
Getting Started
We have provided an Xcode project in this repository.
The provided codebase is not directly related to the challenge topic, but you can use it as a guide for structuring your application. Feel free to add, remove, or change anything if you consider it necessary.
To get started, follow these steps:
Step 1: Follow the TheMovieDb API, you can create your own account or you can use this f6cd5c1a9e6c6b965fdcab0fa6ddd38a
api key.
Step 2: After configuring the API key, you can read the TheMovieDb API documentation to get examples about how to consume the API.
Step 3: Create your own main
branch main-(your name)-(your lastname)
, example: main-steve-jobs
Step 4: Create your own dev
branch dev-(your name)-(your lastname)
, example: dev-steve-jobs
Step 5: Create your task branches using (your name)-(your lastname)-description
, example: steve-jobs-add-network-layer, you must create a PR for any new feature added to your project.
Step 6: Commit periodically.
Step 7: Configure SwiftLint in your project, this repository already contains a swiftlint file.
Step 8: Have fun!
Deliverables
We provide the delivery dates for you to plan accordingly. Please, take this challenge seriously and try to make progress constantly.
It’s worth mentioning that you’ll ONLY get feedback from the review team for your first deliverable, so you will have a chance to fix or improve the code based on our suggestions.
For the final deliverable, we will provide some feedback, but there is no extra review date. If you are struggling with something, we will be happy to help you via the #ios-bootcamp-2021 slack channel.
First Deliverable
-
Home View
- Show movies
- Trending
- Now Playing
- Popular
- Top Rated
- Upcoming
- Show movies
-
Search movie or person.
- Display results by keyword and by query.
-
Movie Details View
- Display the selected movie and its information.
- Display overview.
- Display cast.
- Display similar movies.
- Display recommended movies.
- Option to read reviews.
-
Reviews View
- Display reviews
*Important: what’s listed in this deliverable is just for guidance and to help you distribute your workload; you can deliver more items if necessary.
Final Deliverable
-
Finish any pending functionality or address any comment you receive from your previous deliverable.
-
Unit Testing
- Create tests for your application
- Coverage must be at least
70%
Submitting the deliverables
For submitting your work, you should follow these steps:
- Create a pull request with your code.
- Target your main branch of the repository ios-bootcamp-project-2021.
TheMovieDb API
- Base Url:
https://api.themoviedb.org/3
- Trending url
/trending/movie/day?api_key=f6cd5c1a9e6c6b965fdcab0fa6ddd38a&language=en®ion=US&page=1
- Now Playing url
/movie/now_playing?api_key=f6cd5c1a9e6c6b965fdcab0fa6ddd38a&language=en®ion=US&page=1
- Popular url
/movie/popular?api_key=f6cd5c1a9e6c6b965fdcab0fa6ddd38a&language=en®ion=US&page=1
- Top Rated url
/movie/top_rated?api_key=f6cd5c1a9e6c6b965fdcab0fa6ddd38a&language=en&page=1®ion=US
- Upcoming url
/movie/upcoming?api_key=f6cd5c1a9e6c6b965fdcab0fa6ddd38a&language=en®ion=US&page=1
- Keyword url
/search/keyword?api_key=f6cd5c1a9e6c6b965fdcab0fa6ddd38a&language=en&query=Matrix
- Search url
/search/movie?api_key=f6cd5c1a9e6c6b965fdcab0fa6ddd38a&language=en&page=2&query=Matrix%20
- Reviews url
/movie/603/reviews?api_key=f6cd5c1a9e6c6b965fdcab0fa6ddd38a&language=en&language=en-US
- Similar movies url
/movie/603/similar?api_key=f6cd5c1a9e6c6b965fdcab0fa6ddd38a&language=en
- Recommendations url
/movie/603/recommendations?api_key=f6cd5c1a9e6c6b965fdcab0fa6ddd38a&language=en
*Important: Don't forget to include any additional information that might be necessary for running your code (for example, test user credentials, etc).