|Project Name||Stars||Downloads||Repos Using This||Packages Using This||Most Recent Commit||Total Releases||Latest Release||Open Issues||License||Language|
|Weatherapp||453||2 years ago||1||mit||Kotlin|
|5 Day Forecast app that works on Android and uses latest tools (Kotlin, Navigation, Room, LiveData, Databinding, Dagger 2)|
|Reactiveweatherexample||204||5 years ago||1||mit||Swift|
|A simple iOS weather app using the MVVM pattern and RxSwift framework.|
|Weather Swiftui||45||4 years ago||4||Swift|
|A weather app that uses the Dark Sky API built using SwiftUI! Get the current weather for a particular location and check out the 5-day forecast!|
|Weather App Android Mvvm||31||a year ago||Kotlin|
|Simple MVVM practice repository for very very beginners. You don't need to know about Dagger, Coroutine or Rx for understanding MVVM and this project. To check the MVVM Architecture Bengali Tutorial visit my blog site|
|Myweather||31||3 years ago||Java|
|App displays real-time weather updates for user's location and for other locations set by user. App uses MVVM with Repository pattern, dagger dependency injection, NetworkBoundResource, Navigation component, App widget, Alarm manager, and other Android JetPack components (Room, Viewmodel, Livedata)|
|Kingweather||19||4 years ago||1||mit||Kotlin|
|Tddweatherapp||18||4 years ago||Kotlin|
|Android App trying to apply TDD and using MVVM, Kotlin Coroutines|
|Myweatherkotlinflow||15||3 years ago||Java|
|Android app that shows weather at your current location or any custom location you specify. Uses Kotlin Flow for data streaming and coroutines for asynchronous work. Also leverages Room, navigation component, Viewmodel and Livedata Jetpack components with MVVM presentation layer architecture. Dagger 2 with Dagger android for dependency injection|
|Weatherapp||13||3 years ago||Java|
|AmapWeatherApp（高德天气）：an amap-weather android app that implements MVVM architecture using LiveData, ViewModel, Room, DataBinding, WorkManager, and Retrofit2&Rxjava2.|
|Metio||9||5 years ago||mit||Objective-C|
|iOS app that displays your local weather in a simple, intuitive language|
MVVM Architecture is one of the most popular and latest architecture to develop a maintanable and managable codebase. We are developing a sample
Weater Forecast Android App with
MVVM Architecture using
Kotlin language and
Retrofit network calling library. For simplification, I didn't use
Rx in this project. My main focus is to implement
Dagger 2 dependency injection library as simple as possible.
If you are not familiar with
MVVMarchitecture, then I recommend you to check this MVVM respository with same Weather App project. In that project, you'll find simple
Dagger. After completion of that project, you can continue this repository.
Same weather app project is available for Flutter in this repository.
Kotlin and knowledge of
HTTP request by
Retrofit library are required for this project. If you already know
MVP Architecture then this project will be very easy to understand. You can check my
MVP Architecture Weather App repository from here. It will be helpful if you cover the MVP project then compare between MVP and MVVM. There is my another repository where I've implemented same weather App in MVVM architecture without Dagger.
We will develop a weather forecast Android Application with MVP architecture. The UI will be as like as above screenshot. There is a
Spinner with some
City name. After selection a city user need to hit the
View Weather button. Then App will send request to Open Weather web API and show the weather information in the UI.
We will use Open Weather Map API for collecting weather information. To get the real weather information of a city, you need to sign up and get your own
APP ID. Otherwise you can test the API with their sample
BASE URL and sample
APP ID without creating account.
Clone the project and open it using Android Studio. Then open your
local.properties file under
Gradle Scripts. You need to specify the
app_id in your
local.properties file. Store your API secret in plain string file or Kotlin file is very risky. For security purpose it's better store in local.properties file than plain string/Kotlin file.
Add below lines at the end of your
local.properties file. Then run the project. You'll get dummy or static API response from Open Weather API.
#this is sample Base URL base_url=https://samples.openweathermap.org/data/2.5/ #this is sample App ID of Open Weather API app_id=b6907d289e10d714a6e88b30761fae22
After Sign up at the website collect your own
APP ID from their API Keys page. Then add below lines with your APP ID at the end of
#this is real Base URL base_url=http://api.openweathermap.org/data/2.5/ #this is real App ID of Open Weather API app_id=YOUR_OWN_APP_ID
The BASE URL and APP ID will be fetched from
build.gradle file and will be stored it in
Retrofit API call will use the BASE URL and APP ID from
Note: The free version of Open Weather API allows maximum 60 API calls per minute.
Gradle and run the project. Install APK on your emulator or real device. Turn on the internet of your testing device. For better understanding, please read the comments of every methods. Hope, these comments will help you to feel the
There are some other ways of implementation of
MVVM. For simplicity, I've ignored
RxJava in this project. I will create another repository of