Rick And Morty Jetpack Compose Sample App

License MinAPI Compose Kotlin Gradle

Table of Contents

About The Project

This Sample Application was developed by using Jetpack Compose. MVVM architecture and best practice are followed. You can find everything you need in the Jetpack Compose project within the application.

Architecture

MVVM (Model-View-ViewModel) architecture pattern has been used in the development of this application. The development language of the application is Kotlin.

Tech Stacks

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

  • Compose

    • Material – Build Jetpack Compose UIs with ready to use Material Design Components.
    • Foundation – Write Jetpack Compose applications with ready to use building blocks and extend foundation to build your own design system pieces.
    • UI – Fundamental components of compose UI needed to interact with the device, including layout, drawing, and input.
    • ConstraintLayout – ConstraintLayout-compose 1.0 provides ConstraintLayout functionalities in Jetpack Compose.
    • Lifecycle-ViewModel – Perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.
    • Paging – The Paging Library makes it easier for you to load data gradually and gracefully within your app’s RecyclerView.
    • Lottie – Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile!
    • Coil – An image loading library for Android backed by Kotlin Coroutines.
  • Accompanist

    • Insets – Insets for Jetpack Compose takes a lot of the ideas which drove Insetter for views, and applies them for use in composables.
    • Placeholder – A library which provides a modifier for display ‘placeholder’ UI while content is loading.
  • Jetpack

    • 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.
    • 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.
    • Room – Provides an abstraction layer over SQLite used for offline data caching.
    • Paging3 – The Paging Library makes it easier for you to load data gradually and gracefully within your app’s RecyclerView.
  • Others

  • Retrofit

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

  • Material Design – Build awesome beautiful UIs.

  • Coroutines – Library Support for coroutines,provides runBlocking coroutine builder used in tests.

  • Gson – A modern JSON library for Kotlin and Java.

Features

  • Users can save their own favorite characters.
  • The users can view all characters’ informations; such as names, statuses, etc.
  • The users can view selected characters’ details such as alive or dead, species, genders, last know locations. On the detail page, the users can add or remove the characters to their favorites.
  • The users can search characters by name and filter by status and gender.
  • The users can change application theme.

? MAD Scores

?‍? Contribution

All contributions are welcomed. Feel free to open PR. If you’ve found an error in this sample, please file an issue: https://github.com/mertcantoptas/BaseApp-Jetpack-Compose-Android-Kotlin/issues PRs are encouraged.

Environment Setup

  • First, make sure you have Android Bumblebee (2021.1.1) version installed
  • Android Studio’s Gradle JDK version should be Java 11.0.10.

Contact

Designed and developed by merttoptas (Mert Toptas)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

GitHub

View Github