/NASApp

Email photos taken from a Mars rover and check out NASA's Astronomy Picture of the Day archive

Primary LanguageSwift

NASApp

Treehouse iOS Techdegree Project #12

Your mission, should you choose to accept it, is to build a Swift app stemming from the NASA API. The app must have a landing screen and 2 main areas. You may choose two of the three options listed below. The app MUST make use of UICollectionViews, ScrollViews, Animation, Unit Testing, and Error Handling. We expect you to use different skills in different ways and invite you to go above and beyond the requirements stated in terms of usage of APIs and iOS capabilities. This is a chance to make a really nice portfolio piece, and we hope you make it your own! While mock-ups are provided, these represent just one possible way the finished app could look, so we hope you will get creative and base your layouts and design on the particular functionalities of your app.

Rover Postcard Maker: Access the Mars Rover Imagery API and display a selected, filtered, or randomized image from the Mars Rover. You should also build functionality such that a user can add text over the image and then flatten the new image and send via a pre-populated email.

Eye-In-the-Sky: You will build a tool to access the Earth Imagery API. Users should be able to, at a minimum, query the most recent photo of a particular location on earth. In addition, you may not simply enter latitude and longitudes manually, but must input location information based on an interactive map, importing from contacts, OR another API, such as Foursquare.

Third option: You can absolutely create your own app feature, but must make material use of the NASA API and skills learned in the course, plus at least one skill/API/language feature NOT explicitly covered in the Techdegree thus far.

If you are interested in a rating of “exceeds expectations”, you must implement all three of the above, as well as employ the appropriate tools to do so. In addition, the code should be well-architected and clean.

Before you start

To prepare for this project you'll need to make sure you complete and understand these steps.

  • Read these instructions at least twice.
  • Read up on the NASA API’s. You’ll see both the Earth Imagery and Mars Rover APIs listed above, as well as other options you might want to make use of in your app.

Project Instructions

To complete this project, follow the instructions below. If you get stuck, ask a question in the community.

  • Create a landing screen as well as at least two of the functionalities described above.
  • You are free to submit this project in either Swift 2.3 or Swift 3. For Swift 2.3, if you are using Xcode 8, you will need to download and use the empty Swift 2.3 starter files template to start your project.
  • In your implementation, be sure to utilize asynchronous networking code and where possible, make your code reusable for the different items you’ll be displaying.
  • Be sure to make use of UICollectionViews, ScrollViews, Animation, Unit Testing, and Error Handling.
  • Ensure that you implement Unit Testing to test the code which downloads and parses the data from the API. In addition, test any edge cases, such as not receiving latitude and longitude data.
  • Ensure that your app performs well. You should test all functionalities in Xcode Instruments and describe what performance testing you did in a code comment in the App Delegate.

Extra Credit

To get an "exceeds" rating, you can expand on the project in the following ways:

  • Students interested in a rating of “exceeds expectations” must implement all three of the above, as well as employ the appropriate tools to do so. In addition, the code should be well-architected and clean.
  • Implement all three of the above features.
  • Employ the appropriate tools throughout the app and ensure code is well-architected and clean.