Giter VIP home page Giter VIP logo

-flick's Introduction

FLICK [Still under development]

🎬Flick is an Android app that consumes the TMDB API to get details about upcoming movies, popular movies, top rated movies and shows in general. This app has been built using Kotlin as the base programming language. While building Flick, I am trying to follow the MVVM architecture.

Why I created this repo:

    1. To learn how to structure a software using clean architecture concepts.
    2. To solidify my knowledge on some of the android jetpack components.
    3. To use dependency injection with Koin.

Contents:

  • Screenshots
  • Prerequisite
  • Clean Architecture MVVM
  • Dependency injection with Koin

Screenshots

Prerequisite

Say you want to use TMDB in your future or upcoming projects, what you'll need is an API key, which is really easy to generate. You will want to visit the site here and just follow through the guide to creating your key.

Clean architecture MVVM

Clean-Architecture-graph-650x488

The different parts of this app are represented by different layers of circles as the iamge above depicts. As you move to the center circles, your software artifacts become more abstract. Inner circles tend to contain the business rules of our application. A layer should not know about the activities of a layer above it but a layer can understand components of a layer beneath it.

Layers

1. Domain

This is the most abstract layer of our application. It defines the business logic of our application and the necessary models of entities. What goes in the domain layer?

  • Entity models: Components that bundle the info that will be used in our application.
  • Repository Declarations: Definitions you want implemented by repositories from other layers.
  • Use cases: Are objects that have just one action, to do something specific by utilizing the repository.

2. Data

This layer acts as the entry points of data that we require in our application. These can either be data from remote infrastructure or data persisted locally. What goes in the data layer?

  • Repository implementations: These implement the repository declared in our domain layer
  • Service Declarations: These artifacts are responsible for providing data and are the ones that feed the repository class.

3. Presentation

This is the layer that contains UI related business

Tech Stack.

This project uses many of the popular libraries, plugins and tools of the android ecosystem.

Libraries.

  • Hilt - Dependency Injection library.

  • Jetpack

    • Android KTX - Provide concise, idiomatic Kotlin to Jetpack and Android platform APIs.
    • AndroidX - Major improvement to the original Android Support Library, which is no longer maintained.
    • Lifecycle - Perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.
    • LiveData - Lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
    • ViewModel - Designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.
    • Data Binding - Allows you to bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
    • Room - Provides an abstraction layer over SQLite used for offline data caching.
    • Navigation Component-Component that allows easier implementation of navigation from simple button clicks to more complex patterns.
  • MotionLayout - Helps create and manage beautiful UI animations.

  • Retrofit - Type-safe http client and supports coroutines out of the box.

  • GSON - JSON Parser,used to parse requests on the data layer for Entities and understands Kotlin non-nullable and default parameters.

  • OkHttp-Logging-Interceptor - Logs HTTP request and response data.

  • Coroutines - Library Support for coroutines.

  • Flow - Flows are built on top of coroutines and can provide multiple values. A flow is conceptually a stream of data that can be computed asynchronously.

  • Timber-Library for easier logging.

  • Material Design - Build awesome beautiful UIs.

  • Glide- Image Library from loading images from the database and cacheing in memory.

  • kotlinx.coroutines - Library Support for coroutines,provides runBlocking coroutine builder used in tests.

  • Truth - Assertions Library,provides readability as far as assertions are concerned.

  • MockWebServer - Web server for testing HTTP clients, verify requests and responses on the TMDB API with the retrofit client.

-flick's People

Contributors

kagiri11 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.