Skip to content

Latest commit

 

History

History
170 lines (119 loc) · 3.64 KB

File metadata and controls

170 lines (119 loc) · 3.64 KB

🍽 Recipe App Using Jetpack Compose

This project is a modern Android Recipe application built using Jetpack Compose and follows best practices in Android development. It is primarily a learning project inspired by Mitch Tabian’s MVVM Recipe App, with a focus on understanding modern Android architecture and UI development patterns.


📌 Overview

In this project, you will learn how to build a fully functional Android app using:

  • Jetpack Compose (Declarative UI)
  • MVVM Architecture
  • Dagger-Hilt (Dependency Injection)
  • Custom Theming System
  • Compose Animations
  • State Management using MutableState / StateFlow
  • Clean separation of concerns

The goal is to understand how modern Android apps are structured using a scalable and maintainable architecture.


🚀 Tech Stack

  • Kotlin
  • Jetpack Compose
  • MVVM Architecture
  • Dagger-Hilt
  • Coroutines
  • StateFlow / MutableState
  • Material 3 Theming
  • Navigation Compose
  • Compose Animation APIs

🏗 Architecture

This project follows MVVM (Model-View-ViewModel) architecture pattern.

Structure

  UI Layer (Compose Screens)
  ↓
  ViewModel (State Holder + Business Logic)
  ↓
  Repository (Data Management Layer)
  ↓
  Remote / Local Data Source (API / Cache)

🎯 Key Features

🧑‍🍳 Recipe Listing

  • Displays a list of recipes
  • Smooth UI rendering using LazyColumn

🔍 Search Functionality

  • Search recipes dynamically
  • Reactive UI updates

🎨 Custom Theming

  • Dark and Light theme support
  • Centralized theme management using Compose Material 3

💉 Dependency Injection

  • Dagger-Hilt used for clean dependency management
  • Easy scalability and testability

🔄 State Management

  • Uses MutableState / StateFlow
  • Reactive UI updates with Compose recomposition

✨ Animations

  • Smooth UI transitions using Compose animation APIs

📱 UI Preview

Recipe App Preview


📂 Project Structure

  com.example.recipeapp
  │
  ├── data
  │ ├── remote (API services)
  │ ├── repository (Repository implementation)
  │
  ├── domain
  │ ├── model (Data models)
  │
  ├── presentation
  │ ├── screens (Compose UI)
  │ ├── viewmodel (State & logic)
  │ ├── components (Reusable UI components)
  │
  ├── di
  │ ├── AppModule
  │ ├── NetworkModule
  │
  └── RecipeApplication

🔄 Data Flow

  User Interaction
  ↓
  Composable UI
  ↓
  ViewModel
  ↓
  Repository
  ↓
  Remote API / Local Cache
  ↓
  State Updated (Flow / MutableState)
  ↓
  UI Recomposition

🧠 What You Will Learn

  • How Jetpack Compose replaces XML-based UI
  • How MVVM architecture works in modern Android apps
  • Dependency Injection using Hilt
  • Managing UI state efficiently
  • Building reusable composables
  • Handling asynchronous data with Coroutines
  • Implementing animations in Compose

🙏 Credits

This project is based on the excellent tutorial by:

👉 Mitch Tabian
GitHub: https://github.com/mitchtabian/MVVMRecipeApp

All credit for the original concept goes to him.


📌 Future Improvements

  • Add offline caching with Room Database
  • Implement pagination for recipe list
  • Add favorites feature
  • Add unit & UI tests
  • Improve UI with advanced animations
  • Add multi-module architecture

📄 License

This project is for educational purposes only.