A clean, modern Android weather app with GPS location, city search with autocomplete, and hourly forecast.
⚠️ This project is currently in active development. Features may be incomplete or subject to change.
- Main screen UI
- Parallel API requests
- Clean Architecture
- GPS location detection
- Hourly forecast carousel
- City search with autocomplete
- Saved cities screen
- Saved cities with Room
- Dark / Light theme support
- Onboarding screen
- Widget for home screen
- Settings (units, language)
Skye follows Clean Architecture with MVVM and a strict separation of layers:
presentation/ → Jetpack Compose UI, ViewModel, UiState
domain/ → Use Cases, Repository interfaces, Domain models
data/ → Retrofit API, Room Database, Repository implementations, Mappers
Powered by OpenWeatherMap:
- Current Weather —
/data/2.5/weather - 5 Day Forecast —
/data/2.5/forecast - Geocoding —
/geo/1.0/direct
-
Clone the repo
-
Get a free API key from openweathermap.org
-
Add to your
local.properties:WEATHER_API_KEY=your_api_key_here -
Build and run on Android 11+ (API 30)
dev.dmil.skye/
├── data/
│ ├── dto/ # API response models
│ ├── local/ # Room database, DAO, entities
│ ├── mapper/ # DTO → Domain mappers
│ ├── remote/ # Retrofit API interface
│ └── repository/ # Repository implementations
├── di/ # Hilt modules
├── domain/
│ ├── model/ # Domain models
│ ├── repository/ # Repository interfaces
│ └── usecase/ # Use cases
└── presentation/
├── screen/ # Compose screens
├── state/ # UI state classes
├── ui/theme/ # Material3 theme
└── viewmodel/ # ViewModels
