Skip to content

Latest commit

Β 

History

History
145 lines (97 loc) Β· 3.63 KB

File metadata and controls

145 lines (97 loc) Β· 3.63 KB

🍽️ TheMeal - Recipe Discovery App

A modern and responsive recipe discovery application developed with React. Browse thousands of recipes, save your favorites, and explore different cuisines with an intuitive search experience.

🌐 Live Demo

View Application β†’

✨ Features

  • πŸ” Real-Time Search - Instant results and autocomplete suggestions while typing
  • ❀️ Favorite System - Persistently save recipes you love using localStorage
  • πŸŒ™ Dark/Light Mode - Theme switching with smooth transitions
  • πŸ“± Fully Responsive - Optimized for mobile, tablet, and desktop
  • πŸ—‚οΈ Category Navigation - Discover recipes by category (Vegetarian, Seafood, Desserts, etc.)
  • 🎨 Fluid Animations - Polished user interface with hover effects and transitions
  • 🌍 International Recipes - Explore dishes from world cuisines

πŸ› οΈ Technologies Used

  • React 18 - Modern React and Hooks
  • React Router v6 - Client-side routing
  • Context API - Global state management
  • Bootstrap 5 - Responsive UI framework
  • Bootstrap Icons - Icon library
  • TheMealDB API - Recipe data source
  • Vite - Fast build tool and development server

πŸ“¦ Installation and Setup

Prerequisites

  • Node.js (v14 or higher)
  • npm or yarn

Steps

  1. Clone the repository
git clone https://github.com/Erdem-Baran/meal-api-project.git

cd meal-api-project/meal-project-github
  1. Load the dependencies
npm install
  1. Start the development server
npm run dev
  1. Open in your browser

http://localhost:5173

  1. Get a build for production
npm run build

πŸ“ Project Structure

meal-project-github/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/          # Reusable components
β”‚   β”‚   β”œβ”€β”€ FavoriteButton.jsx
β”‚   β”‚   β”œβ”€β”€ Footer.jsx
β”‚   β”‚   β”œβ”€β”€ Header.jsx
β”‚   β”‚   β”œβ”€β”€ Loading.jsx
β”‚   β”‚   └── Search.jsx
β”‚   β”œβ”€β”€ contexts/           # React Context providers
β”‚   β”‚   β”œβ”€β”€ Favorites.jsx
β”‚   β”‚   └── ThemeContext.jsx
β”‚   β”œβ”€β”€ layout/            # Layout components
β”‚   β”‚   └── MainLayout.jsx
β”‚   β”œβ”€β”€ pages/             # Page components
β”‚   β”‚   β”œβ”€β”€ CategoryMeals.jsx
β”‚   β”‚   β”œβ”€β”€ FavoritesPage.jsx
β”‚   β”‚   β”œβ”€β”€ Home.jsx
β”‚   β”‚   β”œβ”€β”€ Meal.jsx
β”‚   β”‚   β”œβ”€β”€ MealDetails.jsx
β”‚   β”‚   β”œβ”€β”€ SearchResults.jsx
β”‚   β”‚   └── Vegetarian.jsx
β”‚   β”œβ”€β”€ App.jsx
β”‚   β”œβ”€β”€ main.jsx
β”‚   └── index.css
β”œβ”€β”€ public/
β”œβ”€β”€ package.json
└── vite.config.js

🎯 Learning Outcomes While developing this project, I learned and applied the following:

βœ… Advanced React Hooks - useState, useEffect, useContext, useRef

βœ… React Router v6 - Dynamic routing, nested routes, URL parameters

βœ… Context API - Global state management without Redux

βœ… API Integration - Fetching and processing data from external sources

βœ… localStorage - Persisting user preferences

βœ… Debouncing - Optimizing search performance

βœ… Responsive Design - Mobile-first approach with Bootstrap

βœ… Component Composition - Creating reusable UI components

πŸ™ Acknowledgements API: TheMealDB - Free recipe API

Icons: Bootstrap Icons

UI Framework: Bootstrap 5

πŸ“„ License This project is licensed under the MIT License - feel free to use it for learning purposes.

πŸ‘€ Developer Erdem Baran

GitHub: @Erdem-Baran

LinkedIn: My Profile

⭐ If you found this project useful, please give it a star!