All Projects β†’ HamdiBoumaiza β†’ Stars

HamdiBoumaiza / Stars

Licence: other
An android application build with a clean architecture approach and Star wars API

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Stars

Foodium
It simply loads Posts data from API and stores it in persistence storage (i.e. SQLite Database). Posts will be always loaded from local database. Remote data (from API) and Local data is always synchronized.
Stars: ✭ 1,940 (+3492.59%)
Mutual labels:  coroutines, retrofit2, coroutines-android, viewbinding
Superhero-App
πŸ¦ΈπŸ»β€β™‚οΈπŸ¦ΉπŸ»β€β™€οΈSuperhero app built with Kotlin, ViewModel, LiveData, ViewBinding, Room, and Hilt
Stars: ✭ 27 (-50%)
Mutual labels:  coroutines, dagger2, retrofit2, viewbinding
Modular App Core
Core implementations for a modular Android App
Stars: ✭ 127 (+135.19%)
Mutual labels:  coroutines, clean-architecture, dagger2, retrofit2
Kotlin Android Scaffolding
An android project structure using kotlin and most common libraries.
Stars: ✭ 53 (-1.85%)
Mutual labels:  android-application, clean-architecture, dagger2, retrofit2
raffler-kotlin
A raffling app developed as a playground to study many topics related to Android. Kotlin + Coroutines + MVVM
Stars: ✭ 44 (-18.52%)
Mutual labels:  coroutines, clean-architecture, dagger2, coroutines-android
Kotlin Modular Tdd Coroutines Mvvm
A sample Kotlin app which was built with modular structure, Kotlin DSL, Kotlin Coroutines, TDD and MVVM patterns.
Stars: ✭ 256 (+374.07%)
Mutual labels:  coroutines, clean-architecture, dagger2, retrofit2
Fountain
Android Kotlin paged endpoints made easy
Stars: ✭ 175 (+224.07%)
Mutual labels:  coroutines, dagger2, retrofit2
Android Kotlin Mvi Cleanarchitecture
Android + Kotlin + Modularization + Gradle Depedency managment + Gradle written in Kotlin DSL + Custom Gradle Plugin + MVVM + MVI + Clean Architecture + Repository Pattern + Coroutines + Flows + Koin + Retrofit2 + ROOM + Kotlin-Android-Extension + KtLints
Stars: ✭ 187 (+246.3%)
Mutual labels:  coroutines, clean-architecture, retrofit2
Movies Kotlin Kata
Katas for practice Kotlin( Coroutines, dataclasses, delegate properties...) Clean Architecture and best practices in Android(DI, Dagger, MVP, Espresso) implemented by Jorge SΓ‘nchez (Xurxodev)
Stars: ✭ 240 (+344.44%)
Mutual labels:  coroutines, clean-architecture, dagger2
FoodApp
Proof of concept for food app [JetPack + Coroutines + Flow + MockK + JaCoCo coverage + SonarQube]
Stars: ✭ 25 (-53.7%)
Mutual labels:  coroutines, clean-architecture, coroutines-android
Movieapp Clean Architecture
Learning Project (Movie App) For Applying Android Architecture Components And Clean Architecture Using MVVM With Kotlin
Stars: ✭ 123 (+127.78%)
Mutual labels:  coroutines, clean-architecture, dagger2
Android-Starter-Kit
This is up-to-date android studio project for native android application, that is using modern tools and libraries.
Stars: ✭ 16 (-70.37%)
Mutual labels:  clean-architecture, dagger2, retrofit2
movies
An example approach for modularization, reactive clean architecture and persistancy.
Stars: ✭ 110 (+103.7%)
Mutual labels:  clean-architecture, dagger2, retrofit2
Coolweather
Weather App that uses Android best practices. Android Jetpack, clean architecture. Written in Kotlin
Stars: ✭ 154 (+185.19%)
Mutual labels:  coroutines, clean-architecture, retrofit2
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 (-25.93%)
Mutual labels:  coroutines, dagger2, coroutines-android
android-clean-architecture
πŸš€πŸš€πŸš€ The boilerplate for Android using Kotlin & Clean architecture.
Stars: ✭ 21 (-61.11%)
Mutual labels:  coroutines, clean-architecture, coroutines-android
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 (-7.41%)
Mutual labels:  coroutines, clean-architecture, coroutines-android
Android-Clean-Architecture
πŸš€A basic sample android application to understand Clean Architecture in a very simple way and is written in Kotlin.
Stars: ✭ 39 (-27.78%)
Mutual labels:  android-application, clean-architecture, dagger2
News
A sample News πŸ—ž app built using Modern Android Development [Architecture Components, Coroutines, Retrofit, Room, Kotlin, Dagger]
Stars: ✭ 774 (+1333.33%)
Mutual labels:  coroutines, dagger2, retrofit2
Pinboard Kotlin
Unofficial Pinboard android app, developed as a playground to study many topics related to Android. Kotlin + Coroutines + MVVM
Stars: ✭ 60 (+11.11%)
Mutual labels:  coroutines, clean-architecture, dagger2

About StarWars App

Hello there , In this project I tried showcasing how to build an Android Application with clean architecture and MVVM using some of the jetpack libraries with Kotlin Coroutines & Dagger2. This App is using the Star Wars API as a remote data source.

This side Project was initially a case study given to me as a challenge for an android role.

I wrote an article a while back in which i talked about some the choices i take when developing an android application.

This app is based on the Guide to app architecture article, Kotlin 1.4, and coroutine. I also used some android architecture components like LiveData, ViewModel.

Screenshots

Project Architecture

Communication between layers

  1. UI calls method from ViewModel.
  2. ViewModel executes Use case.
  3. Use case executes one or multiple Repositorie function.
  4. The Repository returns data from one or multiple Data Sources. the repository is the single source of truth
  5. Information flows back to the UI where we display the data fetched from data sources.

I made a diagram to show the flow of the data between the three layers(data, domain , presentation) data flow diagram

Project Structure

  • Data
    • This is my data layer and consisted of the Room Database associated classes, the Network related classes including the CoinsService interface, and the Repository class as well as the local and remote data sources
  • Domain
    • This is the domain layer and consists of the domain model as well as the domain mapper
  • UI
    • This is the presentation layer. I have set up packages by feature here. This consists of the view related code.
  • DI
    • This is where Dagger related code lives ,connected to the different layers of the application
  • Utils
    • This is where most extension functions and constants and some other utils functions exist.

Libraries Used

  • ViewModel - store and manage UI-related data in a lifecycle conscious way
  • StateFlow - enable flows to optimally emit state updates and emit values to multiple consumers..
  • ViewBinding - write code that interacts with views more easily
  • Material - Material Components.
  • Coroutine - performs background tasks
  • Flows - for asynchronous data streams
  • Retrofit2- networking
  • Gson - JSON Parser
  • Dagger2 - dependency injector
  • Stetho - debug bridge
  • Espresso // UI test
  • Barsita -UI tests Built on top of Espresso
  • Junit // unit tests
  • Truth // Makes your test assertions and failure messages more readable

To be added

  • more testing
  • animations

License πŸ”–

    Apache 2.0 License


    Copyright 2021 Hamdi Boumaiza

    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.

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