All Projects → akhilesh0707 → Rick-and-Morty

akhilesh0707 / Rick-and-Morty

Licence: other
The Rick And Morty - MVVM with a clean architecture approach using some of the best practices in Android Development.

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Rick-and-Morty

Simple-Notes-Kotlin-App
✍️ Simple Note Making App use mvvm architecture , dagger , coroutines and navigation component. Features includes 🗒️ create , edit and ❌ delete notes
Stars: ✭ 40 (-11.11%)
Mutual labels:  room, coroutines, jetpack, architecture-components, navigation-component
Android-Assignment
This assignment gives you basically a post list and its detail with comments.🚀
Stars: ✭ 32 (-28.89%)
Mutual labels:  coroutines, architecture-components, coroutines-flow, dagger-hilt
MVI-Clean-Architecture
MVI + Clean Architecture + Best Practices | Example of Clean Architecture of Android app using MVI design pattern with Jetpack and popular libraries
Stars: ✭ 50 (+11.11%)
Mutual labels:  room, coroutines, navigation-component, dagger-hilt
modern-android
Modern Android Project Skeleton
Stars: ✭ 17 (-62.22%)
Mutual labels:  room, coroutines, jetpack, dagger-hilt
The Movie Db Kotlin
The Movie DB app using Kotlin with updated Android features
Stars: ✭ 176 (+291.11%)
Mutual labels:  room, coroutines, architecture-components
MovieDb
No description or website provided.
Stars: ✭ 34 (-24.44%)
Mutual labels:  navigation-component, coroutines-flow, dagger-hilt
MusicX
MusicX is a music player 🎵 android app built using Kotlin and Jetpack Compose. It follows M.A.D. practices and hence is a good learning resource for beginners
Stars: ✭ 85 (+88.89%)
Mutual labels:  room, coroutines, coroutines-flow
StarWarsSearch-MVI
Star wars sample android project showcasing the use of View components for rendering UI in Fragments and Activities. Uses Android Jetpack, clean architecture with MVI (Uni-directional data flow), dagger hilt, and kotlin coroutines with StateFlow
Stars: ✭ 189 (+320%)
Mutual labels:  coroutines, jetpack, dagger-hilt
News
A sample News 🗞 app built using Modern Android Development [Architecture Components, Coroutines, Retrofit, Room, Kotlin, Dagger]
Stars: ✭ 774 (+1620%)
Mutual labels:  room, coroutines, architecture-components
Delish
Delish, a Food Recipes App in Jetpack Compose and Hilt based on modern Android tech-stacks and MVI clean architecture.
Stars: ✭ 356 (+691.11%)
Mutual labels:  room, coroutines, jetpack
ChatApp
Chat app based on Firebase tools.
Stars: ✭ 88 (+95.56%)
Mutual labels:  room, coroutines, jetpack
GitMessengerBot-Android
타입스크립트, V8 엔진의 자바스크립트, 파이썬 그리고 Git을 지원하는 최첨단 메신저 봇!
Stars: ✭ 51 (+13.33%)
Mutual labels:  room, jetpack, architecture-components
Fountain
Android Kotlin paged endpoints made easy
Stars: ✭ 175 (+288.89%)
Mutual labels:  room, coroutines, architecture-components
android-clean-architecture
Sample for Android Clean Architecture.
Stars: ✭ 120 (+166.67%)
Mutual labels:  room, navigation-component, coroutines-flow
Coolweather
Weather App that uses Android best practices. Android Jetpack, clean architecture. Written in Kotlin
Stars: ✭ 154 (+242.22%)
Mutual labels:  room, coroutines, architecture-components
ResDelivery-Hilt-Coroutines-Mvvm-Single-Activity
This is a Sample Single Activity App (Multi Fragments) that uses Dagger-Hilt, Coroutines Flows, Paging 3 & Mvvm Clean Architecture
Stars: ✭ 28 (-37.78%)
Mutual labels:  coroutines, navigation-component, coroutines-flow
Superhero-App
🦸🏻‍♂️🦹🏻‍♀️Superhero app built with Kotlin, ViewModel, LiveData, ViewBinding, Room, and Hilt
Stars: ✭ 27 (-40%)
Mutual labels:  room, coroutines, architecture-components
Archapp
Simple Android app to show how to design a multi-modules MVVM Android app (fully tested)
Stars: ✭ 551 (+1124.44%)
Mutual labels:  room, coroutines, architecture-components
FoodApp
Proof of concept for food app [JetPack + Coroutines + Flow + MockK + JaCoCo coverage + SonarQube]
Stars: ✭ 25 (-44.44%)
Mutual labels:  coroutines, architecture-components, coroutines-flow
Newsster
Android App using Paging3, Hilt, Coroutines, Flow, Jetpack, MVVM architecture.
Stars: ✭ 147 (+226.67%)
Mutual labels:  room, navigation-component, coroutines-flow

Akhilesh StackOverflow Akhilesh LinkedIn

Rick-and-Morty

The Rick And Morty - App consuming a Rick and Morty API to display Characters it has been built with clean architecture principles, Repository Pattern, and MVVM pattern as well as Architecture Components.

This app shows the usage of the new Navigation Architecture Component in collaboration with the Bottom Navigation view with separate back stack history for each tab.

App features:

  • List of Rick and Morty characters
  • Detail of characters
  • Bookmark character
  • Light/ Dark theme.

Screenshots

List

Architecture

Uses concepts of the notorious Uncle Bob's architecture called Clean Architecture.

  • Better separation of concerns. Each module has a clear API., Feature related classes life in different modules and can't be referenced without explicit module dependency.
  • Features can be developed in parallel eg. by different teams
  • Each feature can be developed in isolation, independently from other features
  • faster compile time

Modules:

  • rick-and-morty-ui - It uses all the components and classes releated to Android Framework. It gets the data from presentation layer and shows on UI. (access all the modules)
  • data - The data layer implements the repository interface that the domain layer defines. This layer provide a single source of truth for data. (Kotlin module that can only access domain module)
  • remote - Handles data interacting with the network. (can only access data module)
  • cache - Handles data interacting with the local storing (Room DB). (can only access data module)
  • domain - The domain layer contains the UseCases that encapsulate a single and very specific task that can be performed. This task is part of the business logic of the application. (Kotlin module that cannot access any other module)
  • presentation - MVVM with ViewModels exposing LiveData that the UI consume. The ViewModel does not know anything about it's consumers. (Android module that can only access domain module)

MAD Scorecard

Tech stack - Library:

  • Kotlin
  • Coroutines - A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously
  • Flow - Flow is used to pass (send) a stream of data that can be computed asynchronously
  • Dagger-Hilt - for dependency injection.
  • Kotlin-DSL - Used to handle gradle dependencies and config versions
  • JetPack
    • LiveData - For reactive style programming (from VM to UI).
    • Lifecycle - Used get lifecyle event of an activity or fragment and performs some action in response to change
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • Room - Used to create room db and store the data.
    • Navigation - Used to navigate between fragments
    • Data Binding - Used to bind UI components in your XML layouts.
  • Material-Components - Material design components like ripple animation, cardView.
  • Retrofit - Used for REST api communication.
  • OkHttp - HTTP client that's efficient by default: HTTP/2 support allows all requests to the same host to share a socket
  • Moshi - Used to convert Java Objects into their JSON representation and vice versa.
  • Timber - Used for logging.
  • Glide - Glide is a fast and efficient image loading library for Android

TODO

  • CI/CD (Github Actions, Bitrise, CircleCI)
  • Unit test
  • Jacoco for test coverage
  • Ktlint or Detekt
  • Use Jetpack Compose

Reference repository

This repository code is mostly inspired by Android-Clean-Architecture-Boilerplate.

Find this repository useful? ❤️

Support it by joining stargazers for this repository.
And follow me for my next creations! 🤩

Contributions

Please feel free to file an issue for errors, suggestions or feature requests. Pull requests are also encouraged.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].