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.
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.
- Kotlin
- Jetpack Compose
- MVVM Architecture
- Dagger-Hilt
- Coroutines
- StateFlow / MutableState
- Material 3 Theming
- Navigation Compose
- Compose Animation APIs
This project follows MVVM (Model-View-ViewModel) architecture pattern.
UI Layer (Compose Screens)
↓
ViewModel (State Holder + Business Logic)
↓
Repository (Data Management Layer)
↓
Remote / Local Data Source (API / Cache)
- Displays a list of recipes
- Smooth UI rendering using LazyColumn
- Search recipes dynamically
- Reactive UI updates
- Dark and Light theme support
- Centralized theme management using Compose Material 3
- Dagger-Hilt used for clean dependency management
- Easy scalability and testability
- Uses MutableState / StateFlow
- Reactive UI updates with Compose recomposition
- Smooth UI transitions using Compose animation APIs
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
User Interaction
↓
Composable UI
↓
ViewModel
↓
Repository
↓
Remote API / Local Cache
↓
State Updated (Flow / MutableState)
↓
UI Recomposition
- 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
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.
- 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
This project is for educational purposes only.
