Skip to content

alexmprog/TheMeals

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TheMeals

GitHub Logo

About

It simply loads data from API and stores it in persistence storage (i.e. SQLite Database).

  • Use real TheMealDB api.
  • Clean and Simple Material UI.
  • Use convention plugins.
  • Multi-module api/impl architecture.
  • Compose Nav3 navigation support.

Built With 🛠

Kotlin - First class and official programming language for Android development.
Kotlin Gradle DSL - Provides an alternative syntax to the traditional Groovy DSL for Gradle build system.
Coroutines - For asynchronous and more..
Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
Compose - The modern toolkit for building native Android UI.
ViewModel - Stores UI-related data that isn't destroyed on UI changes.
Compose Nav3 - Component helps you implement navigation.
Room - SQLite object mapping library.
Hilt - Easy way to incorporate Dagger dependency injection into an Android application.
Retrofit - A type-safe HTTP client for Android and Java.
Kotlin Serialization - A modern JSON library for Kotlin and Java.
MockWebServer - A scriptable web server for testing HTTP clients.
Testing - App contains different kinds of tests: Local Unit, Integration, UI, End2End tests.

Module Graph

%%{
  init: {
    'theme': 'base',
    'themeVariables': {"primaryTextColor":"#F6F8FAff","primaryColor":"#5a4f7c","primaryBorderColor":"#5a4f7c","tertiaryColor":"#40375c","lineColor":"#f5a623","fontSize":"12px"}
  }
}%%

graph TB
  subgraph :core
    :core:network["network"]
    :core:database["database"]
    :core:common["common"]
    :core:navigation["navigation"]
    :core:ui["ui"]
  end
  subgraph :feature:areas
    :feature:areas:impl["impl"]
    :feature:areas:api["api"]
  end
  subgraph :feature:categories
    :feature:categories:api["api"]
    :feature:categories:impl["impl"]
  end
  subgraph :feature:ingredients
    :feature:ingredients:api["api"]
    :feature:ingredients:impl["impl"]
  end
  subgraph :feature:meals
    :feature:meals:api["api"]
    :feature:meals:impl["impl"]
  end
  subgraph :feature:youtube
    :feature:youtube:api["api"]
    :feature:youtube:impl["impl"]
  end
  :feature:areas:impl --> :core:network
  :feature:areas:impl --> :core:database
  :feature:areas:impl --> :core:common
  :feature:areas:impl --> :core:navigation
  :feature:areas:impl --> :core:ui
  :feature:areas:impl --> :feature:areas:api
  :feature:areas:impl --> :feature:meals:api
  :feature:youtube:api --> :core:common
  :feature:youtube:api --> :core:navigation
  :feature:ingredients:api --> :core:common
  :feature:ingredients:api --> :core:navigation
  :feature:youtube:impl --> :core:ui
  :feature:youtube:impl --> :feature:youtube:api
  :feature:youtube:impl --> :core:navigation
  :feature:meals:api --> :core:common
  :feature:meals:api --> :core:navigation
  :feature:areas:api --> :core:common
  :feature:areas:api --> :core:navigation
  :app --> :core:common
  :app --> :core:database
  :app --> :core:ui
  :app --> :core:navigation
  :app --> :core:network
  :app --> :feature:areas:api
  :app --> :feature:areas:impl
  :app --> :feature:categories:api
  :app --> :feature:categories:impl
  :app --> :feature:ingredients:api
  :app --> :feature:ingredients:impl
  :app --> :feature:meals:api
  :app --> :feature:meals:impl
  :app --> :feature:youtube:api
  :app --> :feature:youtube:impl
  :feature:categories:impl --> :core:network
  :feature:categories:impl --> :core:database
  :feature:categories:impl --> :core:common
  :feature:categories:impl --> :core:navigation
  :feature:categories:impl --> :core:ui
  :feature:categories:impl --> :feature:categories:api
  :feature:categories:impl --> :feature:meals:api
  :feature:meals:impl --> :core:network
  :feature:meals:impl --> :core:database
  :feature:meals:impl --> :core:common
  :feature:meals:impl --> :core:navigation
  :feature:meals:impl --> :core:ui
  :feature:meals:impl --> :feature:meals:api
  :feature:meals:impl --> :feature:youtube:api
  :feature:categories:api --> :core:common
  :feature:categories:api --> :core:navigation
  :feature:ingredients:impl --> :core:network
  :feature:ingredients:impl --> :core:database
  :feature:ingredients:impl --> :core:common
  :feature:ingredients:impl --> :core:navigation
  :feature:ingredients:impl --> :core:ui
  :feature:ingredients:impl --> :feature:ingredients:api
  :feature:ingredients:impl --> :feature:meals:api

classDef android-library fill:#3BD482,stroke:#fff,stroke-width:2px,color:#fff;
classDef kotlin-jvm fill:#2C4162,stroke:#fff,stroke-width:2px,color:#fff;
classDef android-application fill:#2C4162,stroke:#fff,stroke-width:2px,color:#fff;
class :feature:areas:impl android-library
class :core:network android-library
class :core:database android-library
class :core:common kotlin-jvm
class :core:navigation android-library
class :core:ui android-library
class :feature:areas:api android-library
class :feature:meals:api android-library
class :feature:youtube:api android-library
class :feature:ingredients:api android-library
class :feature:youtube:impl android-library
class :app android-application
class :feature:categories:api android-library
class :feature:categories:impl android-library
class :feature:ingredients:impl android-library
class :feature:meals:impl android-library

Loading

Architecture

This repository uses recommended Android App architecture. Image of Clean Architecture

About

TheMeals is a sample Android application 📱 built to demonstrate use of Modern Android development tools: Kotlin, Coroutines/Flow, Compose, Jetpack, Clean Architecture + MVVM, Room, Retrofit, Hilt, Coil.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages