I followed the steps below:
- Create repo on Github.
- Include basic dependencies in Gradle:
Dagger2
,Retrofit
andRecyclerView
. - Customize file
gradle.properties
. - Add MVP pattern.
- Import classes to perform basic
Retrofit
call. - Add
Retrofit
Interceptors: Cache, NetworkInterceptor and OfflineInterceptor. - Add
Timber
. - Test basic
Retrofit
call using theGithub API
:https://developer.github.com/v3
. - Create Instrumented Tests to test the app.
- Create
Interceptor
to modifyRetrofit
Header. - Implement
AndroidX
. - Create Unit Test to test Login and Password with
Base64
. - Apply
MockWebServer
on project to perform tests. - Implement
RxJava
onRetrofit
calls. - Insert
Retrofit
result in theRecyclerView
. - Test
Retrofit
call bringing last 5 commits from each repo. - Add
NavigationUtils
. - Add Loading view before data retrieval.
- Create Unit Test to test
take(5)
command. - Add
CardView
toAdapters
. - Read a QrCode and get its link for the Github repo.
- Create graphic interface requesting User Password.
- Fix login feature.
- Update method to check Internet connection.
- Update
DataBinding
. - Add
Pagination
. - Write README.
As requested in the project spec:
- The app reads a QrCode with a Github link.
- The app validates this link and informs the user.
- Then, Login screen is opened.
- All the login checks are made.
- If the user perfoms login correctly, a screen is opened, showing its Github repositories.
- Those repositories are showed in a
RecyclerView
, with its properPagination
. - All repositories are showed: Public and Private repos.
- Clicking on each repo, a Details screen is opened, showing the latest 5 commits from this repo.
- Internet connection check was implemented.
- A lot of tests were created on this project, like: Base64 tests; tests to check the
.take(5)
fromRxJava
Observables; Network tests usingIdlingResource
.
Also, this app is using:
- Kotlin
- SOLID and Clean Code principles
- Retrofit
- Dagger 2
- ConstraintLayout
- Espresso Tests
- RxJava 2
- Timber
- RecyclerView
- CardView