Skip to content

tlopez7/VolBites

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

170 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VolBites

VolBites Logo

Your Personal Recipe Companion

React Native Expo License


👥 Team Members

Name GitHub ID
Ar-Raniry Ar-Rasyid NiryXD
Tristan Lopez tlopez7
Jonathan Lange jdlange3
Noah Cash ncash3
Sidarth Santhosh Kumar ssanthos

📱 About VolBites

VolBites is a comprehensive mobile recipe application built with React Native and Expo. It helps users discover, save, and create recipes while providing personalized food recommendations based on their mood, preferences, and dietary restrictions.

Key Features

  • 🔍 Recipe Search: Search thousands of recipes using the Spoonacular API with advanced filtering options (calories, protein, fat, carbs, cooking time)
  • ❤️ Favorites: Save your favorite recipes for quick access
  • 📝 Personal Recipes: Create and manage your own custom recipes
  • 🤖 AI Chatbot: Get recipe recommendations and cooking advice from VolBot, your friendly nutritionist assistant
  • 🗺️ Restaurant Finder: Discover nearby restaurants using location-based search
  • 😊 Mood-Based Recommendations: Get food suggestions based on how you're feeling
  • 📋 Recipe Notes: Add personal notes to community recipes to customize them your way
  • Recipe Ratings: Rate and view community ratings for recipes
  • 🌙 Dark Mode: Comfortable viewing in light or dark theme
  • 🔐 Secure Authentication: Puzzle captcha and secure login with Supabase

📋 Table of Contents


🚀 Installation

Prerequisites

Step 1: Clone the Repository

git clone https://github.com/utk-cs340-fall25/VolBites.git
cd VolBites/VolBites

Step 2: Install Dependencies

npm install

or

yarn install

⚙️ Configuration

Environment Variables

Create a .env file in the VolBites directory with the following API keys:

SPOONACULAR_API_KEY=your_spoonacular_api_key_here
OPENAI_API_KEY=your_openai_api_key_here
GEOAPIFY_API_KEY=your_geoapify_api_key_here
SUPABASE_URL=your_supabase_url_here
SUPABASE_ANON_KEY=your_supabase_anon_key_here

Getting API Keys

  1. Spoonacular API: Sign up at spoonacular.com to get a free API key
  2. OpenAI API: Get your API key from platform.openai.com
  3. Geoapify API: Register at geoapify.com for geocoding services
  4. Supabase: Create a project at supabase.com and get your URL and anon key

Supabase Database Setup

Create the following tables in your Supabase database:

  1. users table (handled by Supabase Auth)

  2. saved_recipes table:

    CREATE TABLE saved_recipes (
      id SERIAL PRIMARY KEY,
      user_id UUID REFERENCES auth.users(id),
      recipe_id INTEGER,
      recipe_name TEXT,
      image TEXT,
      created_at TIMESTAMP DEFAULT NOW()
    );
  3. recipe_ratings table:

    CREATE TABLE recipe_ratings (
      id SERIAL PRIMARY KEY,
      user_id UUID REFERENCES auth.users(id),
      recipe_id INTEGER,
      rating INTEGER CHECK (rating >= 1 AND rating <= 5),
      created_at TIMESTAMP DEFAULT NOW(),
      updated_at TIMESTAMP DEFAULT NOW(),
      UNIQUE(user_id, recipe_id)
    );

🏃 Running the App

Development Mode

  1. Start the Expo development server:
npm start

or

expo start
  1. Choose how to run the app:
    • Scan QR code: Open Expo Go on your phone and scan the QR code displayed in the terminal
    • Press i: Open iOS simulator (requires Xcode on Mac)
    • Press a: Open Android emulator (requires Android Studio)
    • Press w: Open in web browser

Platform-Specific Commands

# iOS
npm run ios
# or
expo start --ios

# Android
npm run android
# or
expo start --android

# Web
npm run web
# or
expo start --web

Using Tunnel Mode (for testing on physical devices)

npm run start:tunnel
# or
expo start --tunnel

📖 Usage Guide

Getting Started

  1. Sign Up: Create a new account with your email and password
  2. Login: Use your credentials to log in (with puzzle captcha for security)
  3. Explore: Start searching for recipes or use the mood-based recommendation feature

Main Features

🔍 Recipe Search

  • Use the search bar on the home screen to find recipes
  • Click the filter icon to set nutrition filters (calories, protein, fat, carbs)
  • Tap on any recipe to view detailed instructions, ingredients, and nutrition information

❤️ Favorites

  • Tap the heart icon on any recipe to save it to your favorites
  • Access all your saved recipes from the "Favorites" button on the home screen

📝 Create Your Own Recipes

  • Tap "My Recipes" on the home screen
  • Click "Upload Recipe" to create a new recipe
  • Fill in the recipe details, ingredients, instructions, and nutrition information
  • Add a photo from your gallery

🤖 Chat with VolBot

  • Tap the floating chat button on the home screen
  • Ask VolBot for recipe recommendations, cooking tips, or restaurant suggestions
  • VolBot uses your dietary preferences to provide personalized suggestions

🗺️ Find Restaurants

  • Tap the floating map button on the home screen
  • View nearby restaurants (default: Knoxville, TN)
  • Change location by tapping the location icon and entering a city name

😊 Mood-Based Recommendations

  • Tap "I'm Feeling..." button on the home screen
  • Enter your current mood (e.g., "ecstatic", "sad", "stressed", "energetic")
  • Get personalized food recommendations based on your mood
  • Quick-select from common moods or type your own

📋 Recipe Notes

  • View any community recipe
  • Add personal notes to remember modifications or tips
  • Edit or delete your notes anytime

⭐ Rate Recipes

  • View any recipe and use the star rating system
  • See average ratings from the community
  • Your ratings help others discover great recipes

⚙️ Settings

  • Access settings from the gear icon on the home screen
  • Toggle dark mode for comfortable viewing
  • Set dietary preferences (vegetarian, vegan, keto, etc.)
  • Add dietary restrictions and allergens
  • Upload a profile picture
  • Log out when finished

📁 Project Structure

VolBites/
├── assets/                 # Images, icons, and other static assets
├── App.js                  # Main app component with navigation
├── HomeScreen.js           # Main home screen with search and navigation
├── LoginScreen.js          # User authentication screen
├── SignUpScreen.js         # User registration screen
├── RecipeDetailScreen.js   # Detailed recipe view with notes and ratings
├── ChatBotScreen.js        # AI chatbot interface
├── FavoritesScreen.js      # Saved recipes screen
├── YourRecipesScreen.js    # User-created recipes screen
├── UploadRecipeScreen.js   # Recipe creation screen
├── RestaurantsScreen.js    # Restaurant finder screen
├── SettingsScreen.js       # User settings and preferences
├── spoonacular.js          # Spoonacular API integration
├── geoapify.js             # Geoapify API integration
├── supabaseClient.js       # Supabase client configuration
├── supabaseConfig.js       # Supabase configuration
├── recipeNotesStorage.js   # Recipe notes storage utilities
├── favoritesStorage.js     # Favorites storage utilities
├── userRecipesStorage.js   # User recipes storage utilities
├── viewHistoryHelper.js    # Recipe view history tracking
├── PuzzleCaptcha.js        # Puzzle captcha component
├── StarRating.js           # Star rating component
├── RememberMe.js           # Remember me functionality
├── package.json            # Project dependencies
├── app.json                # Expo configuration
└── babel.config.js         # Babel configuration

🛠️ Technologies Used

Frontend

  • React Native (0.81.5) - Mobile app framework
  • Expo (~54.0.22) - Development platform and tooling
  • React Navigation - Navigation library
  • React Native AsyncStorage - Local data persistence

Backend & APIs

  • Supabase - Authentication and database
  • Spoonacular API - Recipe data and search
  • OpenAI API - AI-powered chatbot and mood-to-food conversion
  • Geoapify API - Geocoding and restaurant search

UI/UX

  • Expo Vector Icons - Icon library
  • Expo Image Picker - Image selection from gallery
  • React Native Safe Area Context - Safe area handling

📄 License

This project is licensed under the terms specified in LICENSE.txt. Please refer to the LICENSE.txt file for detailed license information.


🤝 Contributing

This is a course project for COSC340 at the University of Tennessee, Knoxville. For questions or issues, please contact the team members listed above.


📞 Support

For issues, questions, or contributions, please reach out to any of the team members via their GitHub profiles listed above.


Made with ❤️ by the VolBites Team

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published