A Tiktok style feed of songs

Overview

🌔 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.

You might also like...
Demo of Downloading Songs/Images through Android Download Manager using RxJava2
Demo of Downloading Songs/Images through Android Download Manager using RxJava2

Downloader Demo using RxJava Overview This project is for downloading items(songs, images etc) in Android using RxJava2. There are, however 2 conditio

With Sarang, you can listen to millions of songs and podcasts for free!

With Sarang, you can listen to millions of songs and podcasts for free! Listen to artists you love and enjoy music and playlists in Hindi, English, Tamil, Telugu, and many more languages.

Listen to your favourite songs from Spotify with your friends in Discord (via Spotify Connect)

Adieux Listen to your favourite songs from Spotify with your friends in Discord (via Spotify Connect) Requires Spotify Premium. This project is self-h

Returns a series of songs which spell out an inputted sentence

MemePlaylistGenerator This is a program which takes a sentence then finds a seri

A media player, currently only for Android, that allows you to play songs in background for free
A media player, currently only for Android, that allows you to play songs in background for free

Just Listen A music player currently only for android. It is using Audius public APIs to display and get the playlists/songs. Available on google play

 A music picker library for React Native. Provides access to the system's UI for selecting songs from the phone's music library.
A music picker library for React Native. Provides access to the system's UI for selecting songs from the phone's music library.

Expo Music Picker A music picker library for React Native. Provides access to the system's UI for selecting songs from the phone's music library. Supp

Android app to search for artists, albums or tracks and get a list of related songs using the iTunes Searcher API.
Android app to search for artists, albums or tracks and get a list of related songs using the iTunes Searcher API.

iTunes Searcher Android app to search for artists, albums or tracks and get a list of related songs using the iTunes Searcher API. Each song may be cl

iOS style scroll wheel (style similar to UIPickerView)
iOS style scroll wheel (style similar to UIPickerView)

WheelPicker iOS-style scroll wheel picker Read this in other languages: Feature Day / Night Mode Support Customizable style Support circular scro

Flym News Reader is a light Android feed reader (RSS/Atom)
Flym News Reader is a light Android feed reader (RSS/Atom)

BEWARE: Google added some restrictions to news app and I don't see how Flym (and other RSS aggregators) could comply to that. For instance, Flym canno

📱:newspaper: Android client for the Nextcloud news/feed reader app
📱:newspaper: Android client for the Nextcloud news/feed reader app

Nextcloud News Reader – Android App The Nextcloud News Reader Android App is under AGPLv3 License terms. Bugs and enhancements can be reported under:

Flym News Reader is a light Android feed reader (RSS/Atom)
Flym News Reader is a light Android feed reader (RSS/Atom)

BEWARE: Google added some restrictions to news app and I don't see how Flym (and other RSS aggregators) could comply to that. For instance, Flym canno

📱:newspaper: Android client for the Nextcloud news/feed reader app
📱:newspaper: Android client for the Nextcloud news/feed reader app

Nextcloud News Reader – Android App The Nextcloud News Reader Android App is under AGPLv3 License terms. Bugs and enhancements can be reported under:

A feed for GitHub, written in Kotlin using Jetpack Compose.

Gimmick A while back, I noticed that the official GitHub app doesn't have a feed similar to the one can find on the GitHub homepage. Naturally I had t

a one-page homescreen with a feed

Cinta launcher A scrollable feed that acts as your homescreen. Feel free to fork, contribute or use parts of the code in your own projects. Contribute

KtRssReader is a Kotlin library for parsing RSS feed.

KtRssReader is a Kotlin library for parsing RSS feed.

NewsFeedApp - An android news-feed-app which shows latest news of various sources
NewsFeedApp - An android news-feed-app which shows latest news of various sources

NewsFeedApp An android news-feed-app which shows latest news of various sources

Flym News Reader is a light Android feed reader (RSS/Atom)

BEWARE: The original developer stopped the development of the app so I'm starting to work on it to improve it and maintain it. Flym News Reader Light

A android platform i.e, App that helps marriage/party halls and individuals to connect to the nearest places where this food could feed those in need and food wastage is minimised

(Muskan- The joy of giving by nature) , a android platform i.e, App that helps marriage/party halls and individuals to connect to the nearest places where this food could feed those in need and food wastage is minimised.

Active record style SQLite persistence for Android

ActiveAndroid ActiveAndroid is an active record style ORM (object relational mapper). What does that mean exactly? Well, ActiveAndroid allows you to s

Releases(v1.0.0)
Owner
Desmond Ngwuta Chidiebere
Android & Flutter Engineer
Desmond Ngwuta Chidiebere
An app showing how to make an Instagram/YouTube Shorts/TikTok style video pager

It's pretty straightforward to get started using ExoPlayer by following the library's Hello world! documentation. Once you throw Android's lifecycles

Nick 84 Dec 21, 2022
With Sarang, you can listen to millions of songs and podcasts for free!

With Sarang, you can listen to millions of songs and podcasts for free! Listen to artists you love and enjoy music and playlists in Hindi, English, Tamil, Telugu, and many more languages.

Mausam Singh 11 Jun 13, 2022
Listen to your favourite songs from Spotify with your friends in Discord (via Spotify Connect)

Adieux Listen to your favourite songs from Spotify with your friends in Discord (via Spotify Connect) Requires Spotify Premium. This project is self-h

Conor Byrne 6 Feb 15, 2022
Coinbase-pro-feed-kotlin - Kotlin Coinbase Pro Level 2 Order Book Feed

Kotlin Coinbase Pro Level 2 Order Book Feed Quick start Depending on your OS run

Eric McEvoy 0 Jan 2, 2022
A simple app showing how to make a YouTube Shorts/TikTok style video pager

It's pretty straightforward to get started using ExoPlayer by following the library's Hello world! documentation. Once you throw Android's lifecycles

Nick 83 Jan 4, 2023
An app showing how to make an Instagram/YouTube Shorts/TikTok style video pager

It's pretty straightforward to get started using ExoPlayer by following the library's Hello world! documentation. Once you throw Android's lifecycles

Nick 84 Dec 21, 2022
A clone of the TikTok App using Flutter.

Tik Tok App clone TikTok is an iOS and Android media app for creating and sharing short videos. The app was launched in 2017 by ByteDance, for markets

Maxwell Cofie 211 Dec 19, 2022
TikTok-RecyclerView - This is a demo app built using 'Koin' a new dependency injection framework for Android along with RecyclerView and ExoPlayer2.

TikTok-RecyclerView Demo About This is a demo app built using 'Koin' a new dependency injection framework for Android along with RecyclerView and ExoP

Baljeet Singh 19 Dec 28, 2022
Developers memes "TikTok"

Тестовое задание в Тинькофф Финтех Скриншоты Latest category Top category Приложение для просмотра gif Скролл между мемами как в тик токе Три категори

Igor Nechaev 1 Feb 11, 2022
A Flutter plugin thats support share files to social media like TikTok, Instagram, Facebook, WhatsApp, Telegram and more others...

Social Share Kit A Flutter plugin that's support share files to social media like Tiktok, Instagram, Facebook, WhatsApp, Telegram and more. This plugi

Kaique Gazola 2 Sep 2, 2022