A sophisticated Android weather application built with modern Android development practices, emphasizing clean architecture, MVVM pattern, and robust data handling.
The app follows Clean Architecture principles with MVI pattern:
- Presentation Layer: MVVM with ViewModels and UI States
- Domain Layer: Use Cases and Business Logic
- Data Layer: Repository Pattern with Local and Remote Data Sources
- Clear separation of concerns
- Independent layers with defined boundaries
- Dependency injection for better testability
- Use cases for business logic encapsulation
- Datastore for persistent storage
- Efficient caching of weather data
- Reliable city selection persistence
- Offline-first approach
- Retrofit integration with WeatherAPI.com
- Coroutines for async operations
- Comprehensive error handling
- Clean API response mapping
- Current weather conditions
- Temperature and "feels like" metrics
- Humidity levels
- UV index tracking
- Weather condition icons
- Correct Wind Direction Icons.
- Kotlin
- Coroutines for async operations
- Flow for reactive programming
- Hilt for dependency injection
- Room for local storage
- Retrofit for API communication
- ViewModel
- Compose
- Material Design components
-
Clone the repository: git clone https://github.com/yourusername/tenki.git
-
API Configuration:
- Obtain API key from WeatherAPI.com
- Navigate to app/src/main/java/com/htueko/tenki/core/constant/RemoteApiConstant.kt
- Replace PLACE_YOUR_KEY_HERE with your API key Base URL: https://api.weatherapi.com/v1/
- Comprehensive unit tests for each layer
- Integration tests for data flow
- UI tests for critical user journeys
- Gradle-based build system
- Windows: gradlew.bat
- macOS/Linux: ./gradlew
- Kotlin coding conventions
- Clean Architecture principles
- SOLID principles
- Dependency injection
- Comprehensive error handling
- Proper documentation
Licensed under Apache License, Version 2.0
Contributions welcome through pull requests.