Yum Yard is an Android application built with Jetpack Compose. The app allows users to browse and share food recipes, post reviews, follow chefs, and contribute their own recipes. The app also supports user authentication and data management through Supabase.
- Browse a variety of recipes with detailed ingredients, instructions, and measures.
- Filter recipes based on categories and dietary preferences.
- Post reviews for recipes.
- Follow chefs to get updates on their latest recipes.
- Share your own recipes with the community.
- Search for recipes by name, ingredients, or categories.
- Supabase Authentication for user sign-in (email/password, OAuth).
- Supabase Database for managing recipes, user data, and reviews.
- Modern and responsive user interface built using Jetpack Compose.
- Smooth UI transitions and animations.
- Adaptive layout for various screen sizes and orientations.
- Jetpack Compose: UI toolkit for building native Android apps.
- Kotlin: The programming language used for the app.
- Koin: Dependency injection library for managing app components and simplifying the codebase.
- Supabase:
- Supabase Authentication for handling user authentication.
- Supabase Database for storing and retrieving recipes, user reviews, and other data.
- Coil: Library for efficient image loading.
- Room Database: for storing the favorite recipes on the device memory.
The app follows the MVVM (Model-View-ViewModel) architecture, which is structured as follows:
- Model: Contains the business logic and data operations, managing interactions with the Supabase database.
- View: Composed of the Jetpack Compose UI elements, observing and displaying data from the ViewModel.
- ViewModel: Manages UI-related data using StateFlow for state management, ensuring a reactive interface.
- Koin is used to manage the injection of dependencies like the Supabase service, repositories, and ViewModels, simplifying the code and making it more testable.
-
Clone the repository:
git clone https://github.com/YoussefmSaber/Yum-Yard.git cd Yum-Yard -
Open the project in Android Studio.
-
Supabase Setup:
- Create a Supabase account at Supabase.io.
- Create a new project and configure the database schema.
- Obtain the
SUPABASE_URLandSUPABASE_ANON_KEYfor authentication and data access. - Add the configuration to your project, typically in
strings.xmlor a config file.
-
Run the app:
- Sync the project with Gradle files and run it on an emulator or physical device.
- Test authentication and recipe browsing functionalities.
This project is licensed under the MIT License - see the LICENSE file for details.
- Jetpack Compose Documentation for UI development.
- Kotlin Lang for the language used in the app.
- Supabase Documentation for backend services and authentication.
- Koin Documentation for dependency injection.
Contributions are welcome! If you'd like to improve the app, feel free to fork the repository, create a branch, and submit a pull request.