Skip to content

This project is an application that applied some of the latest Google technologies for Android such as Jetpack Compose, Hilt Dependencies Injection and Room Database.

License

Notifications You must be signed in to change notification settings

NicosNicolaou16/ShipsWithComposeMvvmUIStatesAndRepository

Repository files navigation

Ships With Compose Mvvm UI States and Repository

This project is an application that applied some of the latest Google technologies for Android such as Jetpack Compose, Hilt Dependencies Injection and Room Database.

The Project Contain the following technologies

The programming language is the Kotlin, it is a modern, JVM-based programming language that is concise, safe, and interoperable with Java.
Kotlin Coroutines is used for asynchronous tasks.
Kotlin KTX is a collection of Kotlin extensions that offer more concise and expressive code for working with Android APIs and libraries. The UI is build using Jetpack Compose.
Retrofit is responsible for making requests and retrieving data from the remote server. (Repository)
Room Database is responsible for saving the retrieved data from the remote server, querying data from the local database, and supporting offline functionality.
Hilt Dependencies Injection is an Android library that simplifies dependency injection by using annotations to automatically manage and provide dependencies across components, built on top of Dagger. (Documentation)
MVVM with repository is an architecture where the Repository manages data sources (e.g., network, database), the ViewModel processes the data for the UI, and the View displays the UI, ensuring a clear separation of concerns.
UI State to initial, loading, loaded and error.
KSP (Kotlin Symbol Processing) is a tool for processing Kotlin code at compile time, enabling developers to create powerful code generation and annotation processing solutions. (ksp only setup for Room Database) (Repository)
R8 enabled, is a code shrinker and obfuscator for Android that optimizes and reduces the size of APKs by removing unused code and resources, while also obfuscating the remaining code to improve security.
Gradle Kotlin DSL is a domain-specific language for configuring Gradle build scripts using Kotlin syntax, offering better IDE support and type safety compared to Groovy.

Versioning

Target SDK version: 35
Minimum SDK version: 28
Kotlin version: 2.1.0
Gradle version: 8.7.3

Tutorials (Combination)

https://www.youtube.com/watch?v=eAbKK7JNxCE&ab_channel=PhilippLackner
https://github.com/philipplackner/WeatherApp
https://developer.android.com/topic/architecture/ui-layer/state-production
https://github.com/android/architecture-samples
https://github.com/android/sunflower

Feeds/Urls/End Point (parsing some data from the response)

(Links References for Ends Points)

https://github.com/r-spacex/SpaceX-API (GitHub)
https://docs.spacexdata.com/?version=latest (Postman)