SlushFlicks has been built upon public APIs from IMDB.

Overview

SlushFlicks

SlushFlicks has been built upon public APIs from IMDB. This application helps users to view trending, popular, upcoming and top-rated movies and Tv shows and their detailed information. Users can also search for a movie or Tv show. This app also cache data to support offline browsing. This is a personal project and the core objective of this project was to have hands-on experience on Android jetpack library components (like Navigation, JetpackCompose), MVI architecture, Kotlin Multiplatform Mobile(KMM).

SlushFlicks SlushFlicks SlushFlicks

Libraries & Components

  • Kotlin Multiplatform Mobile(KMM)
  • Jetpack Compose (Android' Modern UI toolkit)
  • SqlDelight (Database)
  • Kotlin Coroutines (Asynchronous programming)
  • Jetpack Navigation Component
  • Koin (Dependency Injection)
  • Ktor (Network Library)
  • ViewModel
  • Firebase

Architecture

MVI architecture has been followed in this project where the View is producing Events (Intent) based on user interaction. When ViewModel receives these event it updates the ViewState to show loading state if necessary and observe for data from the Repository. Repository responds to the request with either Success or Error and upon receiving the response ViewModel update the ViewState accordingly. As the View is observing for the ViewState, it eventually gets notified about the response and show relevant information to the user.

  • ViewState: ViewState can be considered as the snapshot of the current state of the screen.
  • Event: Events are being fired from the screen based on user interaction.
  • ViewEvent: When ViewState changes it fires the ViewEvents which eventually reflects the changes to the user on the screen.

DataManager

As the Facade design pattern suggests, to create an abstraction layer on top to hide the internal complex implementation. DataManager works as an abstraction layer on top of the local data storage system. As local data can be saved in Database, SharedPreference or even in the asset folder in different files, DataManager provides a simple interface, hiding the information about the actual storage location of data. It also enhances the scalability, as new Local Storage can be added in the future with minimal change.

  • DatabaseManager: Provides data from local database
  • LocalDataManager: Provides non-persistent data. Data that is essential to the different states of the application can be kept here to ensure faster access.
  • SharedPrefManager: Provides data from SharedPreference
  • FireStoreManager: Provides data from firestore. As firestore manages a persistent database for itself and data can be accessed locally from firestore, it has been kept here in the DataManager.
You might also like...
German public broadcasting live streams as an Android app
German public broadcasting live streams as an Android app

Über FAQ Changelog Bibliotheken Über Zapp ist Teil von MediathekView und gibt dir einen schnellen Zugang zu vielen deutschen öffentlich-rechtlichen Fe

An app for developers which contains more than 2.4k+ resources , with 1.2k+ free public API documentation
An app for developers which contains more than 2.4k+ resources , with 1.2k+ free public API documentation

ResourceUp We often spend a lot of time finding good resources to get started with our project right? ResourceUp aims to provide all useful resources

Tonomy ID is the cross-platform mobile wallet (Android and iOS) for public and private EOSIO blockchains

Tonomy ID is the cross-platform mobile wallet (Android and iOS) for public and private EOSIO blockchains. This application allows you to sign transactions on the block chain, share your DID and Verifiable Credentials containing your identity with others in a consensual way and log into web2 and web3 applications. If you lose your phone several mechanisms exist to allow you to recover your account without trusting anyone with custody of your private keys.

"Herbapedia" is a mobile application based on Android that is used as a means of educating the public about herbal plants

"Herbapedia" is a mobile application based on Android that is used as a means of educating the public about herbal plants. This application allows users to be able to view information about herbal plants, identify nearby plants and mark the location of herbal plants so that they can help others.

The app has got fullscreen Turkey map via Huawei Map. App selects random province and shows it borders on the map than user will try to guess the provinces name.
The app has got fullscreen Turkey map via Huawei Map. App selects random province and shows it borders on the map than user will try to guess the provinces name.

Il Bil App Introduction I will introduce you to how to implement Account Kit, Map Kit, Game Service. About the game: The app has got fullscreen Turkey

Awesome Kid's Drawing App. It has a click and draws feature.

CanvaKids Overview It's a kid's drawing app which is build for android users. It is built in Kotlin with some very good practices involved.

App that says if the movie you typed in has bazooka or not.

TemBazuca App that says if the movie you typed in has bazooka or not. But... why? The idea for the app came up while I was watching Choque de Cultura

A sussy 1.17.1 Airplane fork that (hopefully) has better performance and relatively stable
A sussy 1.17.1 Airplane fork that (hopefully) has better performance and relatively stable

Fiadelity A sussy Minecraft server software This project is experimental, its usage in production environment is discouraged if you are not ready to f

An Android app that gives you a password generated by a given phrase with a custom algorithm, it also has password and biometric security.

An Android app that gives you a password generated by a given phrase with a custom algorithm, it also has password and biometric security.

Owner
Sifat Oshan
Android Application Developer
Sifat Oshan
This is an open source launcher project for Android devices that has been built completely from scratch

Description This is an open source launcher project for Android devices that has been built completely from scratch. The main goal of this launcher is

OpenLauncher Team 1.3k Dec 21, 2022
This assignment has been given to me for Android developer position at SonyLiv.

asssignmentSonyLiv This assignment has been given to me for Android developer position at SonyLiv. This codeis not full functional but can give a cont

Rudra Chouhan 0 Nov 21, 2021
This repository has been created to teach SOLID principles.

SOLID Principles Single Responsibility Each class should have only one purpose and not be filled with excessive functionality. Let's look at this Area

Ali Soleimani 2 Aug 15, 2022
Movie streaming is an android app that show us last,newest,top imdb and popular movies.

Movies-Streaming-Android-App An Android application which shows Popular, New Movies, Top Rated movies and all the details of any movie like- Cast, Rev

mojtaba joshaghani 33 Aug 25, 2022
An android application that displays public apis' for developers to use

An android application that displays public apis' for developers to use. This application implements adaptive layout by use of a sliding pane layout

Samora Machel 3 Oct 17, 2022
Trentino public transport with stops, lines, trips and delays. Android app built with Jetpack Compose and Material 3.

Tridenta An Android app for public transport in the italian region "Trentino". You can view information about stops, lines and most importantly trips,

Stypox 14 Jan 10, 2023
Here OneSignal push and in-app-message have been implemented

OneSIgnal demo project Here we have implemented OneSignal inAppMessage and Push Notification ANDROID SDK SETUP WITH ONESIGNAL: https://documentation.o

Fakhrul Alam Siddiqei 2 Dec 7, 2022
A simple and minimal app to track how long you've been sober from anything you want.

Sobriety A simple and minimal app to track how long you've been sober from anything you want. I mostly designed this out of spite for "I Am Sober", wh

Katherine Rose 26 Nov 21, 2022
A sample demo app which has Clean Architecture with MVVM , UI built with Jetpack Compose

A sample demo app (two screen todo list app) which has Clean Architecture with MVVM , UI built with Jetpack Compose and includes Modern Android Development Best Practices with components

BHAVNA THACKER 21 Dec 13, 2022
Ipify allows users to get current public IP address for connected network in real-time

Ipify-Android Ipify allows you to get current public IP address when connected to internet in real-time Add Dependency Use Gradle: Step 1: Add it in y

null 9 Nov 21, 2022