Skip to content

mrabelwahed/OneFootballChallenge

Repository files navigation

Android Take Home Test

The purpose of this test is to evaluate your technical skills, communication and mindset.

You should exemplify the 💪 best work you can do with the provided example and perhaps 💥 surprise us with your solution. You have one week time to work on the test, but our expectations are that a fraction of the time is needed for the test.

You are expected to refactor and improve the project to avoid the mistakes it has.

Procedure

  1. After completing the challenge, clean the project (builds, .gradle, etc). But remember: The project should still be runnable.
  2. Compress project file as a ".zip" file.
  3. Send the zip file back to the person you have been in contact with (from the recruiting team).
  4. You will receive feedback for this project file which you sent us during the live interview.

Notes :

  • Meaningful commit history (git) will be a plus.
  • Feel free to add some comments or provide information in README.md file about things you would like to improve but didn't have time for this.
  • The project zip file size should't be more 15 MB.

Project

In this project, you will have a news feed activity. It retrieves the data from the local JSON file. JSON is parsed manually and elements has been created from the parsed data.

All the logical operations are happening in MyNewsActivity.kt and the layout for the list items is stored in news_item.xml file. There is only one data class for News element and it's in model folder.

The Application is written in Kotlin.

You are free to suggest and implement any library or code snippet that you think that is going to be useful for the codebase. But please be sure to add detailed information about your suggestions and why they would be useful.

Questions

Feel free to reach out to us if you have any issues or questions. You may contact the person that sent the code challenge to you.

🚀 Have fun!

My Solution

  • please check the solution here [branch task/refactor]

  • I used clean architecture from Uncle Bob

  • I used multi module approach to implement the clean architecture

  • I used Kotlin DSL with BuildSrc folder for better dependency management

  • I used Espresso UI testing with Robot Pattern

  • I added unit testing with shared module for testing utils and junit rules

  • I added adaptive icon for the task just for fun

  • I used RxJava for Reactive Programming

  • I used Dagger for dependency Injection

  • I used Junit and Mockito for unit testing

Releases

No releases published

Packages

No packages published

Languages