🌔 Nooble Engineering Challenge (Android Developer)

🔗 Test instructions are here

📜 Description

This test solution is implemented with Clean Architecture

It is written 100% in Kotlin with both unit and integrated tests.🙂

Languages, libraries and tools used

Requirements

Installation

  • To run this code, clone this repository using this command git clone https://github.com/chydee/Nooble-Assessment.git
  • Import into android studio
  • Build the project and run on an android device or emulator

Architecture

The architecture of the project follows the principles of Clean Architecture and MVVM. Here’s how the project implements it:

The app when run will show you a a Tiktok style feed of songs parsed from a json file.

Drawing
Drawing

App module

This layer makes use of the Android Framework and is used to create all of our UI components to display inside of the Main Activity. This layer contains the views(activities and fragments) and the ViewModel. The ViewModel receives its data from the use cases of the domain layer and then supplies the views.

Domain module

The domain layer responsibility is to simply contain the UseCase instance used to retrieve data from the Data layer and pass it onto the Presentation layer.

Data Module

The Data layer is our access point to external data layers and is used to fetch data from multiple sources (examples are cache and network). In this case, it gets data from the local source only. It contains an implementation of the Repository.

Local Module

The local layer contains the business logic that converts the JSON to a list of data that we can use. It contains Room database implementation for storing of shorts.

Appreciation

💡 Motivation and Context

Working on this challenge I have enjoyed:

  • Getting a feel of what modularization is all about
  • Implementing with Kotlin

❓ 💭 What I could have done better in attempting this test

  • Handle error messages properly with more contexts
  • Test end to end
  • Play shorts in the background using actual services
  • Handle AudioFocus in a clean way

…but there’s more from where this came.

GitHub

View Github