Platform:
  • iOS 8.0 and above
  • iPhone 5 and newer
Languages Used:
  • Swift 3
Software tools used:
  • XCode 8
Technologies and concepts used:
  • Core Data
  • RESTful Web Services
  • Google Places API
  • Forecast.io API
  • MVVM Design Pattern
  • In-App Purchasing
  • UIKit
  • Cocoapods
External links:
Accurate locational weather forecasts are retrieved by utilizing the Forecast.io API. The app looks beautiful in landscape and portrait mode.  Night Stand Mode allows the screen to stay on and provides a gorgeous slide-show of nearby photos. Nearby crowd-sourced photos and location data are retrieved using the Google Places API.
Click an image to enlarge.

Description

Vista Weather is a Swift iPhone app, written in XCode entirely by myself.

Vista Weather is a beautiful and super-accurate weather app for iPhone and iPad. Check the local weather forecast or select any city in the world using the Forecast.io API. Get the five-day forecast to plan your week.

In addition to weather conditions, Vista Weather also beautifully displays photos crowd-sourced from your location using the Google Places API. Utilize the amazing Night Stand Mode and turn your device into a digital picture to turn Vista Weather into a gorgeous bed-side slide-show picture frame with up-to-date weather.



Lessons learned and obstacles overcome

This app, while simple on the outside, actually uses advanced methods under the hood.

It was a pleasure learning the MVVM design pattern and applying it to this app. Any time data is updated, the view model is notified and makes the changes to what is displayed to the user. This separation of duties goes even further than the classic MVC design pattern and results in less coupling between the model and the view.

Vista weather also employs two different REST API's to get the information needed - Google Places API and Forecast.io API. By integrating these services, I was able to make a very interesting and unique app that has not been done before.

Lastly, unit testing and UI testing are used throughout the app. Test-driven development is integral to creating a successful app, so I ventured to become proficient at it. The ultimate goal was to write unit tests before writing code, which can be quite a behavioral adjustment. In order to get the hang of unit testing, I began by writing tests after writing production code. Over time, I grew more confident in writing tests and towards the final stages of this app, I found myself able to write tests before writing production code. Implementing unit tests and UI tests has already made an impact, as I have found errors in my code that would not easily found otherwise.