A simple Android app that receives an application's data from the server and displays its details. The user can download and install the application on the device.
- On each app launch, the app has to solve a puzzle to get an authentication token from the server. The app requests the server an array of numbers. They represent price changes of an imaginary stock.
- The app has to find the maximum revenue achieved in the best trading scenario for that price list.
- The app sends the answer to the server, and the server sends an authentication token to the app if the correct answer has been sent.
- The app requests an application's data with the auth token. The application's data includes the title of the app, its icon image, and a URL to download its APK file.
- The application's data is displayed to the user. The user can download the application and install it. Also, the user can pause and resume the downloading process.
The BASE_URL
address is not included in the git files using the Gradle Secret Plugin. Also, I've used the PRDownloader library to download APK files and implement pause/resume functionalities.
In this project, I benefited from several Android concepts and libraries, including:
- Jetpack Compose
- Coroutines
- State Flows
- Retrofit
- Hilt
- Coil
- Moshi
- Gradle Secret Plugin
- JUnit (for the puzzle solver algorithm's unit tests)
Also, I implemented this project with the MVVM pattern using clean architecture principles.