- Search Screen that allows users to enter a US city - DONE
- Display the information that users would be interested in seeing - DONE
- Cache images - DONE
- Auto-load the last city searched upon app launch - DONE
- Ask the User for location access, If the User gives permission to access the location, then retrieve weather data by default - DONE
- Kotlin - Used Kotlin in the whole codebase.
- Java - Used Java in unit tests
- Used MVVM as the architecture for the app
- Retrofit for the networking library
- Junit and Mockito for unit tests
- Kotlin coroutines for the communication between viewModel and view
- RxJava for the RxBus
- Hilt for dependency injection
- core package - holds all the common functionalities for the app
- search package - holds all the UI and business logic for the search page
- weather package - holds all the UI and business logic for the main screean that displays the weather info and the location permission logic
- 20 min - Understand the requirements and setup the plan for execution
- 10 min - Used Postman to test the APIs and understand the response
- 20 min - Setup the project with all the dependencies needed
- 1.15 hrs - Implement the search page, and display search results along with testing and covering corner cases
- 1 hr - Implement the main weather page and display weather info to the user
- 25 min - Implement location permission logic with testing
- 20 min - Implement unit tests for one of the mappers
- 30 min - Final QA pass and code cleanup and documentation (comments and video recording and readme)
- Written more unit tests to cover all viewModels, mappers and repositories
- Moved Search package into its own module. Similarly for the core package.
- Handled configuration changes
- Made the UI look pretty
- made search page more responsive by displaying results as the user types the location
Location permission NOT grated | Location permission granted |
---|---|