MealMate is an Android app for recipe discovery, meal planning, and grocery shopping. It is built natively in Java and works on almost all Android devices (Min SDK 21, Target SDK 35).
This project was vibe coded. No AI coding agents were used to write or generate the code. Every file was written and debugged manually, one piece at a time, until everything worked together.
The app uses a dark and orange theme.
- Background: black (#000000)
- Primary accent: orange (#FF3C00)
- Secondary highlight: soft orange (#FDAA57)
- Text: white (#FFFFFF) for headers, light gray (#B0B0B0) for hints
The UI includes rounded cards, ingredient chips, a home screen slider, and swipe actions for editing or deleting items.
Users can sign up and log in using email and password, or with one tap using Google Sign-In. Firebase Authentication handles login, and user profile data is stored in Firebase Realtime Database. Users can update their profile, change their password, or delete their account.
The home screen has a rotating banner of featured recipes. Recipes are grouped into categories: Veg, Non-Veg, Drinks and Refreshments, Desserts, and Quick Bites. Some recipes come preloaded in the app, while others are uploaded by users and loaded from Firebase in real time.
Users can upload their own recipes with a name, category, cooking time, description, and ingredient list. Recipe images are uploaded to Imgur through a Retrofit network client, which returns a public image link. In the My Recipes section, users can swipe left to delete a recipe or tap to edit it.
Users can plan meals by assigning recipes to specific days, shown with labels like Today, Tomorrow, and weekday names. The app uses AlarmManager and a BroadcastReceiver to send a daily notification reminding users what meals are planned for that day.
Ingredients from any recipe can be added directly to the shopping list. Users can swipe left to remove an item or swipe right to edit it. Shaking the device triggers the accelerometer sensor and opens a dialog asking if the user wants to clear the entire list. The shopping list can also be shared with others through SMS.
- Language: Java (JDK 11)
- Platform: Compile SDK 35, Min SDK 21
- Database: Firebase Realtime Database
- Authentication: Firebase Auth and Google Play Services Auth
- Networking: Retrofit 2.9.0 and OkHttp 4.10.0 (used for Imgur API)
- JSON: Gson Converter 2.9.0 and org.json
- Image Loading: Glide 4.15.1
- Sensors: Android Accelerometer
- UI: ViewPager2, Material Components, Swipe Canvas Helper
The code is organized under the package com.example.mealmateproject:
com.example.mealmateproject/
adapters/
FavoriteRecipeSelectionAdapter.java
HomeSectionAdapter.java (controls horizontal lists on Home screen)
IngredientAdapter.java (handles swipeable grocery items)
RecipeAdapter.java (manages search and profile lists)
models/
HomeSection.java
Recipe.java (predefined and user uploaded recipe model)
User.java (logged in user fields)
network/
ImgurUploadService.java (multipart upload interface)
RetrofitClient.java (base config for api.imgur.com)
AddRecipeActivity.java (upload and edit recipes)
CategoryActivity.java (lists recipes inside a category)
CategoryRecipesActivity.java
DailyMealReminder.java (receiver for daily notifications)
DaySelectionDialog.java
FavoriteFragment.java (user favorites)
FavoriteRecipeSelectionDialog.java
FileUtils.java
HomeFragment.java (dashboard with slider and categories)
LoginActivity.java (email and Google login)
MainActivity.java (bottom navigation and alarm scheduler)
MyRecipesActivity.java (CRUD list with swipe to delete)
NotificationHelper.java (creates notification channels)
ProfileFragment.java (settings, password updates, deletion)
RecipeDescriptionActivity.java (recipe detail, likes, planning, grocery add)
RecipeSelection.java
RecipeSelectionDialog.java
SearchFragment.java (search UI)
ShoppingListFragment.java (shopping list with shake to clear)
ShoppingRecipeDetailActivity.java (SMS share and checklist view)
SignupActivity.java (email sign up)
SliderAdapter.java (controls home banner)
SplashActivity.java (launcher splash screen)
StaticRecipeAdapter.java
StaticRecipeHelper.java
UpdateProfileActivity.java (re-auth and password updates)
- Android Studio (Koala or newer recommended)
- Java Development Kit (JDK) 11 or newer
- A Firebase project
- An Imgur API Client ID (for recipe image uploads)
git clone <repository-url>Or open the downloaded folder directly in Android Studio.
- Go to the Firebase Console (console.firebase.google.com).
- Create a new Firebase project and add an Android app with the package name com.example.mealmateproject.
- Enable Email/Password and Google providers under Authentication.
- Enable Firebase Realtime Database and set up access rules.
- Download the google-services.json file and place it inside the app/ directory of the project.
- Register an application at api.imgur.com/oauth2/addclient.
- Open AddRecipeActivity.java, located at app/src/main/java/com/example/mealmateproject/AddRecipeActivity.java.
- In the uploadRecipe() method, replace the Client ID in the authorization header:
Call<ResponseBody> call = service.uploadImage("Client-ID YOUR_IMGUR_CLIENT_ID", body, titlePart);- Sync Gradle files in Android Studio.
- Select a device or emulator (minimum API 21).
- Click Run.
This project is licensed under the MIT License. Feel free to modify, deploy, and distribute it.