Skip to content

anibalbastiass/android.sworks.challenge

Repository files navigation

Randuser App: Random User app for meet random user and contact them!

CircleCI Kotlin Version AGP Gradle

codebeat badge Codacy Badge CodeFactor

Challenge app for Android Engineer technical test, very useful and funny app for apply Android Architecture components.

This project is a technical test for apply Android Enginner job. Goal:

  • Consume Random User API for show a list of user with endless pagination
  • Save and delete favorite users showing into a horizontal scroll view
  • Typing in a search bar for find suggested users and go forward to user details.
  • Show a user detail with photo a main information
  • Save and delete favorite in detail photo
  • Save contact user into Smartphone contacts

Steps

  • Frontend (Android):
    • From a personal project with a solid, scalable and clean architecture for Android apps (CLEAN + MVVM), begins complete features for this project.
    • This project contains 2 flavors: Dummy and Prod. Dummy reads a JSON file for local interaction and Prod request to API.

This project contains the following milestones

  • Build a scalable and stable architecture for Android App: MVVM + CLEAN Architecture

  • SOLID principles + pattern designs

  • Using Koin for Dependency Injection

  • Apply Android Architecture Components: Navigation, View Model, Live Data, Databinding, Room

  • Use Android X dependencies

  • Using modularization for decouple dependencies

  • Keep clean code and use minimal dependencies

  • Navigation: This app contains a single activity with a Navigation Controller with some Fragments: UserFragment and UsersDetailFragment

  • ViewModel: This component is useful for inject by Koin and implement use cases for connect domain data

  • Databinding and Observables: These are the ones in charge of refreshing data for UI throw Observable vars.

  • Unit Testing Implement test for ViewModel throw captors, mocks for check stats for LiveData too.

  • Continuous Integration With Github Actions feature (Top tab), this repository is processing throw CI.

Screenshots

User List User List with favorites User List with suggestions User Detail Add Contact