Saga of Star wars - An Android sample repo showcasing Clean Arch with MVVM and Epoxy models

Overview

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

Star Wars Universe

This is a showcase android application written in Kotlin and follows Clean Code architecture to showcase Characters from the StarWar movies
Get Sample app

Table of Contents

About The Project

Star Wars Universe 1.0

Welcome 👋 This repo is a showcase of an android application which uses Clean Architecture and manages states using a FSM(Finite state machine) This repo implements a small but scalable (!) app which interacts with the open Star Wars API at https://swapi.dev/

The app contains 2 main areas:

  • Character Search (Home Screen)
  • Character Details (Details Screen)

The following attributes are displayed for the character details:

  • name
  • birth_year
  • height (in cm and feet/inches)
  • name
  • language
  • homeworld
  • population (planets)
  • films (movies the character appeared in)
  • opening_crawl (detailed description of each movie)

Built With

Architecture

Arch

Keywords

  • Screen - Represents a layer to react to State presented by domain layer for UI to show or update UI elements
  • State - State representation of a finite system based on business logic
  • Event - Event representation for UI layer to react to in a finite approach.

Decision log

  • Multi modular architecture and feature module driven architecture
  • Choose navigation components to show that we don't need a single fragment however reuse a Custom view if needed as a destination
  • Breaking down core deps and structuring a scalable but highly adaptable modular code base.
  • Adds a design system module to help with showcasing theming support as well Epoxy driven UI layer where needed
  • Showcasing design principles by breaking down core requirements for building the aforementioned design layer.
  • Writing BaseJunit test to ensure all tests followed same coding standards.
  • Did not have time to invest into UI testing
  • Use of Clean architecture helped ensure SOC for each feature and testability
  • Core/Common Classes - could not cover any test coverage in these modules for now
  • Built custom architecture to break down into unit components in each layer
  • Ensured packaging for readability.
  • 📝 Despite writing tests at the end - did not follow TDD per say , chose this path for a reason - architecture shown in this app has been used by my team for some time now and that allowed control over components to verify at the end
  • Due to bad time crunch over week days , asked for an extension Day to ensure i delivered with satisfaction of completing all checkboxes i had set forth to complete in this submission.
  • Added a error view at the end to first solve core challenges and tackle UI towards end.
  • Ensured wrote granular commits to help understand thought-process from get-go.

Git Logs

Getting Started

Clone the project and review the code or simply download the apk.

Prerequisites

Android Studio 4.2.1 Java 1.8

Installation

  1. Clone the repo
  2. Clean build and then Run with Android Studio

Roadmap

See the open issues for a list of proposed features (and known issues).

Tech-stack

Design Patterns

Dependencies

All the dependencies (external libraries) are defined in the single place - Gradle dependencies.gradle folder. This approach allows to easily manage dependencies and use the same dependency version across all modules.

Tests

Details

Search

Some notable mentions for Code review

This sections mentions some of the issues not covered in this code submission:

  • Have not covered any UI tests in this project.

  • UI layer is barebones but can be improved upon on further enchancements.

  • The Error representation on UI is not covered , but is handled in other layers as states.

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the Apache License 2.0 License. See LICENSE for more information.

Contact

Adit Lal - @aditlal - https://aditlal.dev

Open calendar : calendar

You might also like...
 Android Modern Architecture Sample
Android Modern Architecture Sample

AndroidModernArchitectureSample TODO: write readme Download (playstore release - under review) https://play.google.com/store/apps/details?id=io.github

 Booking - Android Architecture Sample
Booking - Android Architecture Sample

Booking - Android Architecture Sample A simple app that loads information from REST API to show one approach to using some of the best practices in An

MVI Architecture Android Beginners: Sample App

MVI Architecture Android Beginners: Sample App This repository contains a sample app that implements MVI architecture using Kotlin, ViewModel, LiveDat

A sample photo browsing app in Kotlin, Android using Picsum image API.
A sample photo browsing app in Kotlin, Android using Picsum image API.

Picsum Photo App Functionality The app's functionality includes: Fetch a list of images from picsum photos api (https://picsum.photos/) and show them

Sample projects for Android 13 (Developer Preview 1)
Sample projects for Android 13 (Developer Preview 1)

android-13-samples Sample projects for Android 13 (Developer Preview 1). Table of Content Themed App Icon (Github) (Tutorial) Quick Settings Placement

FTUE sample using Jetpack Navigation's Navigation-Compose, ViewModel, SavedStateHandle, Hilt

Jetpack Navigation's Navigation-Compose + Jetpack Compose + NavGraphs + SavedStateHandle + Dagger-Hilt + EventEmitter (toasts / navigation commands) T

Viper - Sample Viper (MVVMR) architecture pattern
Viper - Sample Viper (MVVMR) architecture pattern

Viper V I P E R = View + Interactor + Presenter + Entity + Router My versions Wi

An Android project template with MVVM, Hilt, Navigation and Compose
An Android project template with MVVM, Hilt, Navigation and Compose

compose-android-template An Android project template with MVVM, Hilt, Navigation and Compose 🔴 Status UNDER ACTIVE DEVELOPMENT 📄 Terminologies Termi

ROOM Database Example with MVVM in Kotlin[Fragments,Navigation]

RoomDatabase_SampleApp Room Database Sample App Overview Of This Room Database Application In this app, we can do operation on room database | Insert,

Owner
Adit Lal
Android Engineer @Gojek
Adit Lal
Sample Android Clean MVVM architecture

Sample Android Clean MVVM architecture ( Retrofit + Okhttp + Moshi + Coil + Room + Navigation Component + Coroutines + Flow + DataStore + ViewModel + Hilt + Compose )

Javad 3 Jun 30, 2022
A sample Album list app that shows how to use ViewModels and Room together with RxJava & Dagger2, in Kotlin by Clean Architecture.

Kotlin-MVVM-Hilt A sample Album list app that shows how to use ViewModels and Room together with RxJava & Dagger2, in Kotlin by Clean Architecture. Im

hpAndro 1 May 12, 2022
A sample app that demonstrate how to build an Android application using the Uncle Bob's Clean Architecture approach

A sample app that demonstrate how to build an Android application using the Uncle Bob's Clean Architecture approach

Ahmed Shaban  Elhdad 2 Apr 8, 2022
📌This repo contains the kotlin implementation of TensorflowLite Example Android Apps🚀

TensorflowLite Examples Kotlin This repo contains the kotlin implementation of TensorflowLite Example Apps here, which are mostly implemented in java

Sunit Roy 29 Jan 1, 2023
This application features - Modern Minimalistic Design, MVVM, Pagination, Hilt, Retrofit, Room, Data Store, Flow, Live Data, Navigation Component (Clean Architecture)

NewsFly NewsFly is a modern news android application which features virtually ALL recent and recommended android development tech stack and tools used

Ibrahim 121 Nov 4, 2022
Template for MVVM Architecture Clean Code.

MVVM Template Kotlin Template for MVVM Architecture. This is basic template for android app follwing MVVM architecture and latest tech stack. You don'

mohamed tamer 28 Sep 26, 2022
MVVM(Model View ViewModel) sample in Kotlin using the components ViewModel, LiveData and Retrofit library

kotlin-mvvm Languages: English, Spanish MVVM(Model View ViewModel) sample in Kotlin using the components ViewModel, LiveData, the libraries Retrofit,

Eduardo José Medina Alfaro 466 Jan 5, 2023
📚 Sample Android Components Architecture on a modular word focused on the scalability, testability and maintainability written in Kotlin, following best practices using Jetpack.

Android Components Architecture in a Modular Word Android Components Architecture in a Modular Word is a sample project that presents modern, 2020 app

Madalin Valceleanu 2.3k Dec 30, 2022
Quarkus Sample Application with extensions cache, kotlin, rest client, resteasy and smallrye

quarkus-sample Project This project uses Quarkus, the Supersonic Subatomic Java Framework. If you want to learn more about Quarkus, please visit its w

Erdem Aydın 1 Sep 25, 2022
This is an example implementation of android accessibility services with 5 Sample Actions

Android Accessibility Services Example This is an example implementation of android accessibility services with 5 Sample Actions such as: Simulate Pow

Muhammad Fahriansyah 7 Jul 1, 2022