WeatherX 🌡️☁️❄️☀️ Android application demonstrate various Android development best practices
-
Coroutines for asynchronous tasks.
-
ksp: Kotlin Symbol Processing for code generation.
-
Jetpack Libraries:
- Jetpack Compose: Android’s modern declarative UI-toolkit.
- Android Architecture Components
- Lifecycle: Observe Android lifecycles and handle UI states based on the lifecycle changes.
- ViewModel: Manage UI-related data.
- Room Database : provides an abstraction layer over SQLite to allow fluent database access while harnessing the full power of SQLite.
- Hilt: dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
- Compose Navigation Component : The Navigation component provides support for Jetpack Compose applications. You can navigate between composables while taking advantage of the Navigation component's infrastructure and features., supported by Hilt Compose Navigation.
-
Retrofit2 & OkHttp3: to request REST APIs.
-
Moshi: A modern JSON library for Kotlin and Java.
-
Coil Compose: Loading images from network.
-
Accompanist Permissions A library which provides Android runtime permissions support for Jetpack Compose.
-
Architecture
- The app following MVVM Clean Architecture (View - ViewModel - Model) - Domain layer - Data layer with Repository Pattern, Which facilitates separation of concerns
before build the project an to be able to use weather forecast API you need to get your own
API key from
openweathermap then add it to local.properties file
API_KEY = [YOUR_API_KEY]
Copyright 2025 Nedal Hasan ABDALLAH (NedaluOf)
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
http://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.

