A simple application that provides a weather forecast.
- The app displays the user a map and allows him to choose a city.
- The user enters a city name, the app sends api request and shows a list of query suggestions.
- After the user has selected a city, pin is dropped on the map.
- The app fetches data from the network and saves it locally on android device.
- Weather forecast details are displayed for chosen city (temperature, pressure, humidity etc.)
- Every 24 hours the app re-fetches data from the network and updates UI.
- Error handler handles different errors such as api errors, internet connection and displays an error either in dialog or snack bar.
To show how to implement MVVM design pattern and using RxJava for background tasks.
Android Architecture Components (ViewModel, Lifecycle), Retrofit, Dagger 2, RxJava 2, GreedDao, Glide.
- Refactor Network Helper.
- Use interface for WeatherRepository to follow Dependency Inversion Principle.
- Use diff utils instead of re-draw weather details in case update comes.
- Change dynamically navigation bar title.
- Improve UI design.
- Add unit tests.