The project fetch movies from OMDbApi by page number incrementally from 1 to 100. The list of movies are then displayed with pagination (order by page number fetched) based on the search keyword provided.
Only local DB (Room persistence library) are used in this project. On user sign up, the password are hashed using SHA-1 and is stored in database which is encrypted using SQLCipher.
Realistically, any sensitive data (e.g. access token) should be stored in backend (either encrypted or hashed) as locally stored credentials are not secure. Additionally, you may want to use Proguard/R8 to obfuscate the code.
There is only one module (app module) which contains:
- Data layer - Contains data layer related files (dao, model, network, repository, database)
- Dependency Injection (DI) - Contains all the hilt modules defined to supply related dependencies
- UI (Presentation) layer - Contains all the views related class (fragment, viewmodel, adapter)
- Util - Contains all the utils class used in this project (e.g. extension functions)
- Kotlin
- MVVM architecture
- Coroutine
- Kotlin Flow
- Material Design
Network
Security
- SQLCipher (for encrypting Room database)
- Security Library (for sharedPreferences encryption and decryption)
Dependency Injection (DI)
Image Loader
Logging
Others
You can define your own API key obtained from OMDbApi in local.properties file
sdk.dir=........
API_KEY=YOUR_KEY_HERE