A web application that helps users find recipes based on available ingredients and meal preferences. The application uses TheMealDB's free API to search through thousands of recipes.
- Search recipes by ingredients
- Filter by meal types (Breakfast, Chicken, Seafood, Vegan, etc.)
- View detailed recipe instructions
- See recipe origin and category
- Beautiful, responsive UI
- Recipe images and ingredient lists
- Frontend: React with TypeScript and Chakra UI
- Backend: Python Flask
- API: TheMealDB (free, no API key required)
- Node.js (v18 or higher)
- Python 3.8 or higher
- npm or yarn
- Navigate to the backend directory:
cd backend- Create a Python virtual environment:
# On macOS/Linux
python3 -m venv venv
source venv/bin/activate
# On Windows
python -m venv venv
.\venv\Scripts\activate- Install Python dependencies:
pip install -r requirements.txt- Start the Flask server:
python app.pyThe backend server will start at http://localhost:5000
- Open a new terminal and navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Start the development server:
npm run devThe frontend will be available at http://localhost:5173
- Make sure both backend and frontend servers are running
- Open your browser and navigate to
http://localhost:5173 - Enter ingredients in the input field (e.g., chicken, rice, tomato)
- Optionally select meal types to filter results
- Click "Search Recipes" to find matching recipes
- View detailed recipes with:
- Full ingredient lists with measurements
- Step-by-step cooking instructions
- Recipe origin and category
- Recipe images
The backend exposes the following endpoint:
POST /api/recipes- Request body:
{ "ingredients": ["ingredient1", "ingredient2"], "preferences": ["Chicken", "Seafood"] } - Response: Array of recipe objects with details
- Request body:
-
If you see no results:
- Make sure to use common ingredient names (e.g., "chicken" instead of "chicken breast")
- Try searching with a single ingredient first
- Check if both frontend and backend servers are running
-
If you can't connect to the backend:
- Verify the Flask server is running on port 5000
- Check for any error messages in the terminal
- Make sure no other application is using port 5000
- Fork the repository
- Create a new branch for your feature
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License.