/gray-sky-weather

Primary LanguageKotlinApache License 2.0Apache-2.0

CircleCI Maintainability

Gray Sky

☀️ The app that makes your mood affect the weather.

Oops 🧐

☀️ About

Gray Sky Weather is the app to compare the closest locations weather on the same timeline. Talking about the weather can be used as an ice-breaker with a stranger or in difficult situations (ex: a job interview).

The name Gray Sky is after Dark Sky got bought by Apple. The color gray comes from this quote of "Breaking Bad":

We came up with the name. Schwartz: black. Walter White. So together, they became Gray Matter Technologies.

I plan to publish on the Google Play store and improve the project.

🏘️ Architecture

I use MVVM, which is de facto Clean Architecture promoted by Google.

Each location weather forecast is self-contained in a fragment WeatherForecastFragment. This Fragment requests its data( weather forecast and reverse geocoding). If the weather forecast were constantly updated, the references to this Fragment would be kept at the parent level(MainActivity) to coordinate.

The coroutines/LiveData are a good replacement for RxJava's SingleObserver.

🕵️‍ How to run

Clone this project

git clone https://github.com/raychenon/gray-sky-weather.git

Open in Android Studio the file build.gradle.kts (the one at root folder).

Build & Run 🔥

Update the latest versions of dependencies

Thanks to refreshVersions, enter the following terminal command line ./gradlew refreshVersions

🕵️‍ How to test

All the locations are hardcoded in GlobalConstants.CITIES.

You can change the latitude and longitude of the GlobalConstants.USER_LOCATION.

🦁 TODO

  • add the feature "user's current geolocation". It needs an user flow(permission accepted, permission denied)
  • Unit testing
  • UI testing
  • nice animations (ex: Lottie)

🙏 Acknowledgements & Special thanks

The weather data and icons come from openweathermap.org

🎁 Licence

This app is released under the Apache License 2.0.

You can read the terms of Apache License 2.0 in simple English