/chuck_norris_facts

Chuck Norris Facts Application

Primary LanguageKotlin

Chuck Norris Facts Application

Build Status

App made using the Chuck Norris API for searching Chuck Norris facts.

About this app

  • This app makes use of Fastlane for tasks automation so, you'll have to install fastlane if you want to run these lanes locally.
  • There's also a continuous integration service running at Bitrise.
  • It was used the Koin for handle dependency injection.

Info

This app uses the Antonio Leiva's clean architecture based on this article.

Details

This app has 5 modules, which are domain, data, usecases, framework and app, which will be described below:

  • Domain: Holds the app's entities

  • Data: Holds the different datasources for the project as well as their interfaces

  • Usecases: Holds the user actions and interactions

  • Framework: Is an Android module and implements mainly the dependencies that will be used at the other layers

  • App: Another Android module that holds the UI, ViewModels and components for the application

Tests

This app implements unit and instrumentation tests for the modules below:

  • Data: Test the repositories and if the data is correct

  • Usecases: Test the user actions

  • Framework: Test for all dependencies that are used on the application (e.g. Room Persistence Database for caching)

  • App: Contains instrumentation tests to test ViewModels and Activities as well as UI interactions with the application

Observations

  • This app persists locally the suggestions section (categories) and past searches

  • At the first time on the app it will display a welcome text that guides the user to search facts

  • The categories are fetched at the first running and stored locally for further use

  • It was necessary to keep some cache (local persistence) interfaces at the data module to be used at the repositories, bute their real implementation still on the framework layer.

Libraries

References