Weather App That's Built With Kotlin to get accurate, real-time weather information with a beautiful, user-friendly interface that makes checking the weather a delightful experience. This repository contains a Weather App This is an educational App at the chance. Use and run this App to learn more about Apps design and best practices. That's built with Kotlin language with compose, That's implements Coroutines,Ktor-client for HTTP requests,clean architecture,koin,etc.
- 🌡️ Current Weather Conditions
- ⏲️ Hourly Weather Forecast per current day
- 📅 Weekly Weather Forecast
Weather Screens
| Dark Theme | Light Theme |
|---|---|
dark.theme.mp4 |
light.theme.mp4 |
- Kotlin
- Jetpack Compose
- Coroutines
- Koin
- Ktor-Client
- Serialization
- MVVM architecture
- Clean architecture
- Single activity concept
- Repository pattern
weather app
📂 app
└── 📂 weather
├── 📄 WeatherApplication.kt
├── 📂 data
│ ├── 📂 networking
│ │ ├── 📄 ResponseToResult.kt
│ │ └── 📄 SafeCallNetworkConnection.kt
│ ├── 📂 repositories
│ │ ├── 📄 LocationRepositoryImpl.kt
│ │ └── 📄 WeatherRepositoryImpl.kt
│ ├── 📂 source
│ │ └── 📂 remote
│ │ ├── 📂 dataSource
│ │ │ ├── 📂 location
│ │ │ │ ├── 📄 LocationDataSource.kt
│ │ │ │ └── 📄 LocationRemoteDataSource.kt
│ │ │ └── 📂 weather
│ │ │ ├── 📄 WeatherDataSource.kt
│ │ │ └── 📄 WeatherRemoteDataSource.kt
│ │ └── 📂 responseDto
│ │ ├── 📂 locationDto
│ │ │ ├── 📄 IpAddressResponseModel.kt
│ │ │ └── 📄 LocationResponseModel.kt
│ │ └── 📂 weatherDto
│ │ ├── 📄 CurrentUnitsWeatherResponseModel.kt
│ │ ├── 📄 CurrentWeatherResponseModel.kt
│ │ ├── 📄 DailyUnitsWeatherTemperatureResponseModel.kt
│ │ ├── 📄 DailyWeatherTemperatureResponseModel.kt
│ │ ├── 📄 HourlyUnitsResponseModel.kt
│ │ ├── 📄 HourlyWeatherResponseModel.kt
│ │ └── 📄 WeatherResponseModel.kt
│ └── 📂 utils
│ ├── 📄 Constants.kt
│ ├── 📄 ExceptionMapper.kt
│ └── 📄 NetworkException.kt
├── 📂 di
│ └── 📂 modules
│ ├── 📄 DataSourceModule.kt
│ ├── 📄 NetworkModule.kt
│ ├── 📄 RepositoryModule.kt
│ └── 📄 ViewModelModule.kt
├── 📂 domain
│ ├── 📂 entities
│ │ ├── 📂 locationEntity
│ │ │ ├── 📄 IpAddress.kt
│ │ │ └── 📄 Location.kt
│ │ └── 📂 weatherEntity
│ │ ├── 📄 CurrentUnitsWeather.kt
│ │ ├── 📄 CurrentWeather.kt
│ │ ├── 📄 DailyUnitsWeather.kt
│ │ ├── 📄 DailyWeather.kt
│ │ ├── 📄 HourlyUnits.kt
│ │ ├── 📄 HourlyWeather.kt
│ │ └── 📄 Weather.kt
│ ├── 📂 repositories
│ │ ├── 📄 LocationRepository.kt
│ │ └── 📄 WeatherRepository.kt
│ ├── 📂 usecases
│ │ └── 📄 GetWeatherUseCase.kt
│ └── 📂 utils
│ └── 📂 exceptions
│ ├── 📄 LocationException.kt
│ ├── 📄 WeatherException.kt
│ └── 📄 WeatherExceptions.kt
└── 📂 ui
├── 📄 MainActivity.kt
├── 📂 screens
│ └── 📂 homeScreen
│ ├── 📄 HomeScreen.kt
│ ├── 📄 HomeUiStateMapper.kt
│ ├── 📄 HomeViewModel.kt
│ ├── 📂 composables
│ │ ├── 📄 CurrentWeatherSection.kt
│ │ ├── 📄 ExtraWeatherInfoItem.kt
│ │ ├── 📄 ExtraWeatherSection.kt
│ │ ├── 📄 LocationSection.kt
│ │ ├── 📄 MinMaxTemperature.kt
│ │ ├── 📄 SectionLabel.kt
│ │ ├── 📄 Spacer.kt
│ │ ├── 📄 TodaySection.kt
│ │ ├── 📄 TodayWeatherItem.kt
│ │ ├── 📄 WeatherForecastCard.kt
│ │ └── 📄 WeatherForecastItem.kt
│ └── 📂 uiStates
│ ├── 📄 CurrentWeatherUiState.kt
│ ├── 📄 DailyForecast.kt
│ ├── 📄 ExtraWeatherInfoUiState.kt
│ ├── 📄 HomeUiState.kt
│ ├── 📄 HourlyWeatherUiState.kt
│ ├── 📄 TodayWeatherUiState.kt
│ └── 📄 WeeklyWeatherUiState.kt
Copyright (c) 2025 khaatteerr
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all


