FlavorFusion is a dynamic and responsive web application built for food enthusiasts to explore, discover, and enjoy new recipes from around the world.
Powered by the Spoonacular API, it provides an extensive collection of recipes with detailed ingredients, instructions, and curated recommendations.
- 🔍 Recipe Search: Instantly find recipes using keywords.
- 🌎 Browse by Cuisine: Explore cuisines such as Italian, American, Thai, Japanese, and more.
- 🎠 Curated Carousels: Interactive carousels featuring Random Picks and Vegetarian Picks for inspiration.
- 📜 Detailed Recipe Pages: View complete recipe details — ingredients, cooking steps, and preparation time.
- 📱 Responsive Layout: Optimized for both desktop and mobile viewing.
- ✨ Smooth Animations: Enhanced UX using Framer Motion for transitions and animations.
- ⚡ Client-Side Caching: Implements
localStoragefor faster load times and reduced API usage.
| Category | Technologies |
|---|---|
| Frontend | React |
| Routing | React Router DOM |
| Styling | Styled Components |
| Animations | Framer Motion |
| Carousel | Splide.js (React) |
| Icons | React Icons |
| API | Spoonacular Food API |
The project is organized into the following main directories:
FlavorFusion/
├── public/
│ ├── index.html
│ └── favicon.ico
├── src/
│ ├── components/ # Reusable UI components (Carousels, Search Bar, Categories)
│ ├── pages/ # Page components (Home, Cuisine, Recipe)
│ ├── App.js # Main layout and routing logic
│ ├── index.css # Global styles
│ ├── index.js # Application entry point
│ └── utils/ # Helper functions and API utilities
├── .env # Environment variables (API key)
├── package.json
└── README.md
Follow these steps to set up FlavorFusion locally:
git clone https://github.com/soumyadeepmandal2003/flavorfusion.git
cd flavorfusion2️⃣ Set up environment variables
This project uses the Spoonacular API to fetch recipe data. You’ll need an API key to run the app.
Create a .env file in the root directory and add your key:
REACT_APP_FOOD_API_KEY=YOUR_API_KEY_HERE3️⃣ Install dependencies
npm install4️⃣ Start the development server
npm startYour app should now be running on 👉 http://localhost:3000
🧠 How It Works
API Integration: The app fetches recipe data dynamically from the Spoonacular API.
Search Functionality: Users can search recipes by dish name, cuisine, or ingredient.
Local Caching: Data fetched once is stored in localStorage to minimize API calls.
Dynamic Routing: Using React Router DOM for smooth page navigation.
Animation Layer: Framer Motion enhances transitions and component entry animations.
🧰 Available Scripts
In the project directory, you can run:
| Command | Description |
|---|---|
npm start |
Runs the app in development mode |
npm run build |
Builds the app for production |
npm test |
Launches the test runner |
npm run eject |
Exposes configuration files for customization |
Contributions are always welcome and appreciated! ❤️
Whether it’s fixing a bug, improving documentation, or adding a new feature — every contribution helps FlavorFusion grow.
If you’d like to contribute, please follow these steps:
-
Fork the Repository
Click on the Fork button at the top-right corner of this repository page.
This will create your own copy of the project under your GitHub account. -
Clone Your Fork
git clone https://github.com/<your-username>/flavorfusion.git cd flavorfusion
-
Create a New Branch
git checkout -b feature-name
-
Make Your Changes Edit the files as needed. Make sure your code is clean, well-formatted, and follows best practices.
-
Commit Your Changes
git add . git commit -m "Added: description of your feature or fix"
-
Push to Your Branch
git push origin feature-name
-
Open a Pull Request (PR) Go to your fork on GitHub. Click on Compare & Pull Request. Add a clear title and description explaining what you changed and why. Submit the pull request for review.
To ensure a smooth collaboration process, please follow these best practices:
- 🧹 Code Formatting: Maintain consistent code style, indentation, and naming conventions.
- 💬 Commit Messages: Keep commits atomic and write clear, descriptive commit messages.
- 📦 Dependencies: If you introduce new dependencies, document them in the
README.mdor add notes inpackage.json. - 🧪 Testing: Test all features and fixes thoroughly before submitting a Pull Request (PR).
- 🤝 Respectful Communication: Be constructive, respectful, and open to feedback during discussions or reviews.
“Good code tells a story — make sure yours is readable, meaningful, and easy to follow.” ✨
If you encounter issues while running or building the app, try the following:
-
🔑 Invalid or Missing API Key:
- Ensure your Spoonacular API key is correctly set in the
.envfile. - Verify that your key has not reached its daily limit.
- Ensure your Spoonacular API key is correctly set in the
-
⚙️ Environment Variables Not Working:
- Make sure your
.envfile is placed in the project root (not inside/src). - Restart your development server after any
.envchange.
- Make sure your
-
🧹 Cached Data Issues:
- Clear your browser’s
localStorageand refresh the app to reload new data.
- Clear your browser’s
-
🧱 Blank Page or Missing Components:
- Double-check all import paths and component names.
- Ensure that the React Router setup in
App.jsmatches your folder structure.
-
🪄 Build or Dependency Errors:
- Delete the
node_modulesfolder and reinstall dependencies:rm -rf node_modules npm install
- Then restart your app with:
npm start
- Delete the
💡 Tip:
If the issue persists, open a GitHub Issue describing your problem.
Include screenshots, console logs, and steps to reproduce it — this helps maintainers assist you faster.
- Spoonacular API — for providing recipe data
- React — for the frontend UI framework
- Framer Motion — for smooth animations and transitions
- Splide.js — for interactive carousel components
👨💻 Soumyadeep Mandal
GitHub • LinkedIn
“Ignite Flavor, Elevate Every Bite.” 🍲