This challenge is designed to assess your iOS engineering skills through the development of a simple weather forecast application. We're looking for innovative solutions that demonstrate strong architectural thinking, clean code principles, an eye for design,and a deep understanding of iOS development best practices.
Implement the requirements below to create a weather forecast application using the OpenWeatherMap API to showcase your ability to design scalable, maintainable, and high-quality iOS software.
Endpoint | Remarks |
---|---|
5 day weather forecast | Note the 3 hour time period in forecast data, this must be aggregated to get daily min/max values. |
GeoCoding API | Fetch coordinates for a text based search term to use in forecast/current weather API calls. |
Current Weather | Fetch current conditions for the given coordinates. |
Important: Pay close attention to the requirement to aggregate 3 hour forecast windows in the 5 day forecast data to get daily min/max forecast values.
- Automatically fetch and display current weather for the user's current location
- Handle location services unavailability gracefully
- Provide 5-day forecast for current location
- Implement city search functionality
- Allow searching locations by city name
- Display search results
- Enable selecting a search result to view its weather
- Show 5-day forecast for selected location
- Save favorite locations
- Display a list of saved locations
- Allow switching between saved locations
- Show weather in metric units
- Use weather condition icons
- Use provided OpenWeatherMap icons, or SF Symbols.
- Gracefully manage:
- Network connectivity issues
- API errors
- Location service restrictions
- Use Swift & SwiftUI
- Implement robust error management
- Create intuitive, responsive UI
- Visit OpenWeatherMap
- Sign up for a free account
- Generate an API key from your account dashboard
IMPORTANT: Never commit API keys directly to source control
- In the project root directory, run
cp .env.example .env
. - Add your OpenWeatherMap API key to the copied
.env
file. - Build the project in Xcode to copy the
.env
file to the build directory.
An APIKeyManager
helper is provided for you to access the API key. If the previous two steps are followed then the API key can simply be accessed via APIKeyManager.weatherAPIKey
anywhere in the project.
- Implement offline caching
- Support multiple temperature units
- Implement widget extension
- Provide any additional setup instructions
- Include comments explaining complex logic
- Submit code that runs without additional configuration
- Estimated completion time: 4-6 hours
- Focus on quality over complete feature set
If you have any questions or need any clarifications, please reach out to your hiring manager or recruiter.
Good luck!