This project is an Android application that demonstrates a modern, scalable architecture using some of the latest technologies recommended by Google, including Jetpack Compose, Hilt, and Room.
- Modern UI: Built entirely with Jetpack Compose, Android's declarative UI toolkit.
- Clean Architecture: Follows the MVVM (Model-View-ViewModel) pattern with a repository, ensuring a robust and maintainable codebase.
- Offline Support: Caches data using Room Database, allowing the app to function without an internet connection.
- Efficient Networking: Fetches data from a remote server using Retrofit.
- Reliable State Management: Implements a UI State pattern to handle loading, success, and error states gracefully.
- Optimized Performance: Leverages Coroutines for asynchronous operations, KSP for faster annotation processing, and R8 for code shrinking and optimization.
- Simplified Dependency Injection: Uses Hilt to manage dependencies throughout the app.
This project is built with Kotlin and utilizes a variety of modern Android libraries and tools:
- UI: Jetpack Compose
- Architecture: MVVM, Repository Pattern, UI State Management
- Asynchronicity: Kotlin Coroutines, Kotlin KTX
- Data: Retrofit (Networking), Room (Database)
- Dependency Injection: Hilt
- Build & Optimization: Gradle Kotlin DSL, KSP, R8
- Target SDK:
36 - Minimum SDK:
29 - Kotlin Version:
2.3.10 - Gradle Version:
9.0.1
The data for this application is parsed from the SpaceX API.
- API GitHub: SpaceX-API GitHub
- API Documentation: SpaceX-API Docs (Postman)
This project was built by combining knowledge and techniques from various excellent resources:
- Philipp Lackner's WeatherApp Tutorial and Repository
- Android Architecture - UI Layer State Production
- Official Android Architecture Samples
- Google's Sunflower Sample App
If you enjoy this project, please give it a star! Check out all the stargazers here: Stargazers on GitHub
This library is actively maintained. Feedback, bug reports, and feature requests are welcome! Please feel free to open an issue or submit a pull request.