-
The
entity
/domain
:- Only contains business models
-
The
dataprovider
:- Provide data from repository:
- Can get from remote source by using retrofit and map raw data model to business model
- Or, get cached from local source by using room database from
framework
- Provide data from repository:
-
The
usecases
:- Provide the interaction with
dataprovider
forapp
UI
- Provide the interaction with
-
The
framework
:- Implement caching by using Android framework: room database
-
Main
app
:- Apply MVVM architecture
- Apply Dependency Injection by using Dagger
-
- Contains 4 modules:
entirty
,usecases
,dataprovider
, and mainapp
app
contains:base
: define some base classes that will be extented in the applicationdi
: define dependency injection with application scopeext
: define extensions will be used in the applicationfeatures
: separate application into many features will make it be easier on scaling upframework
: implementation of Android framework
- Contains 4 modules:
- Libraries/frameworks using in the application:
- Kotlin
- Coroutines
- Room
- Retrofit
- Dagger
- Rootbeer
- Mockito
- Required configurations:
- AndroidSDK
- Gradle 6.5
- Launch:
- Windows
- gradlew installRelease
- MAC/Ubuntu
- ./gradlew installRelease
- Install from v1.0
- Windows
- ✅ Programming language: Kotlin is required, Java is optional.
- ✅ Design app's architecture (suggest MVVM)
- ✅ Apply LiveData mechanism
- ✅ UI should be looks like in attachment.
- ✅ Write Unit Tests
- Acceptance Tests
- ✅ Exception handling
- ✅ Caching handling
- Secure Android app from:
- ✅ Decompile APK
- ✅ Rooted device
- ✅ Data transmission via network
- Encryption for sensitive information
- Can use Crypto to
encrypt
/decrypt
data with Android KeyStore API
- Can use Crypto to
- Accessibility for Disability Supports:
- ✅ Talkback: Use a screen reader.
- ✅ Scaling Text: Display size and font size: To change the size of items on your screen, adjust the display size or font size.
- ✅ Entity relationship diagram for the database and solution diagrams for the components, infrastructure design if any
- Readme file includes:
- ✅ Brief explanation for the software development principles, patterns & practices being applied
- ✅ Brief explanation for the code folder structure and the key Java/Kotlin libraries and frameworks being used
- ✅ All the required steps in order to get the application run on local computer
- ✅ Check list of items the candidate has done.