/android-dev-challenge-compose-4

Weather app done in Jetpack Compose for the #AndroidDevChallenge 2021 🌦 ☀️. Neumorphism UI.

Primary LanguageKotlinApache License 2.0Apache-2.0

GitHub Cards Preview

C-Weather: Compose with weather

Workflow result

Requirement: Replace WeatherApiManagerImpl#YOUR_KEY_HERE_WITH_FORECAST_AVAILABLE by your openweathermap key

📜 Description

💡 Motivation and Context

What am I proud of?

  • Split UI and logic
  • "Useful" app
    • -> Real data forecast
    • -> Persistence of the forecast
    • -> Change your City / temperature Unit
  • Neumorphism UI

📸 Screenshots

Side notes

This is the first time I'm trying Jetpack Compose. Even if the spirit seems to be reactive paradigm, I will try to use it on a more "classic" way.

Why?

  • Because, if one day I will use this techno in production, I will need a "transition" phase to not move all my code to the "reactive" way.
  • Because stay "non reactive" is easier for the reactive-beginner that I am. I hope that my project demonstrates that Jetpack Compose work well without intensive use of ViewModel, LiveData...
  • Because stay "non reactive" allow you to produce almost the same code on any platform easily (Unity, iOS, server...)

My goals will be:

  • Discover Jetpack Compose
  • Split as much as possible logic from the UI with the good old "MVP"
  • Great UI / Great app quality (app we can publish on Google Play)

Architecture

  • Code and resources split by feature instead of layer to be able to scale
  • DepInjection done manually and user Dagger notions: graph, module, manager...
  • Basic MVP explicit in Contract interfaces

Bonus

  • Translated in french 🇫🇷

Requirement if you a coming from "stable Android Studio" on MacOs

  • Download Java 11 (for example here)
  • Add it like that: /Users/jonathan/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk
  • If cannot open the jdk due to mac os permission, here a tip)

Thank you to:

License

Copyright 2020 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.