IbrahimEzzatSaad / Wally

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

presentation.mp4

Wally

Wallpaper finder and downloader app Demonstrate the Jetpack Compose UI using Unsplash API Made with by Ibrahim Ezzat

Architecture πŸ—Ό

  • Single Activity No Fragment
  • MVVM Pattern

View: Renders UI and delegates user actions to ViewModel

ViewModel: Can have simple UI logic but most of the time just gets the data from UseCase.

UseCase: Contains all business rules and they written in the manner of single responsibility principle.

Repository: Single source of data. Responsible for getting data from one or more data sources.

For more information you can check Guide to app architecture

Architecture

Libraries πŸ“š

  • Kotlin - First class and official programming language for Android development.
  • Jetpack Compose - Jetpack Compose is Android’s modern toolkit for building native UI.
  • Coroutines - For asynchronous and more..
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • Flows - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • Room - Database Library
  • Material Components for Android
    • Modular and customizable Material Design UI components for Android.
  • Dagger - Hilt - Dependency Injection Framework
  • Coil - Image loader library.

Package Structure πŸ—‚

.
.
.
β”œβ”€β”€ Data
|    β”œβ”€β”€ API              # RetroFit
|    β”œβ”€β”€ paging           # Paging3 - RemoteMediator - Pager
|    β”œβ”€β”€ cache            # Room Database
|    └── di               # Hilt Dependency Injection
|
|
β”œβ”€β”€ Domain
|    β”œβ”€β”€ Repository       # Repository interface
|    |
|    └── UseCases         # App UseCases
| 
β”œβ”€β”€ UI                    
|    β”œβ”€β”€ theme            # Compose Theme
|    |               
|    β”œβ”€β”€ component        # UI components composables
|    | 
|    β”œβ”€β”€ navigation       # NavigationHost & Destinations
|    |
|    β”œβ”€β”€ model            # Model for ViewModel & Categories List
|    |
|    └── screens          # UI Screens
|
β”œβ”€β”€ utils                 # Useful classes
|
└── APP.kt          # @HiltAndroidApp

Contribute 🀝

If you want to contribute to this app, you're always welcome!

Design ❀️

Design is inspired from @anwargul0x - Walper

About


Languages

Language:Kotlin 100.0%