by Dmitrii Zverev. 7 Feb 2021 (updated 23 March 2021 with MVVM + Coordinator)
Implement an iOS native app using Swift 5.2 to demonstrate your skills, ability to write clean and maintainable code and attention to details.
Use a UITableViewController to display weather information of Sydney, Melbourne and Brisbane as start.
- Provide a way to add more cities using another modal view controller which includes a search functionality to find a city by name or location.
- City IDs o Sydney, Melbourne and Brisbane are: 4163971, 2147714, 2174003 o More city can be found from the following link: http://bulk.openweathermap.org/sample
- Each cell should display at least two pieces of info: Name of city on the left, temperature on the right.
- Get real time weather information using https://openweathermap.org/current - You can register and get your API key for free.
- A sample request to get weather info for one city: o http://api.openweathermap.org/data/2.5/weather?id=4163971&units=metri c&APPID=your_registered_API_key
- Weather should be automatically updated periodically.
- Use Storyboard and Autolayouts.
- It is fine to use 3rd party libraries via CocoaPods or by other means, but try to avoid using 3rd party library for Networking.
- Please commit your code as you proceed with appropriate commit message.
- MVVM.
- Coordinator.
- Unit tests and try to avoid using 3rd library like RxSwift.
- Use an activity indicator to provide some feedback to user while waiting for network response.
- Allow user to tap on a cell to open a new “Detail view”, to show more information about the city such as current weather summary, min and max temperature, humidity, etc.
- Try to use table view or collection view to display details.
- In the “Detail view”, implement animations to enhance the user experience.
- Support all different dimensions of the devices.
- Support landscape and portrait view together.