/miage-cooking-hub

πŸ₯¦πŸ”πŸš React Scholar Project: Culinary Hub 🍹🍸πŸ₯‚

Primary LanguageTypeScriptMIT LicenseMIT

πŸ₯¦πŸ”πŸš React Scholar Project: Culinary Hub 🍹🍸πŸ₯‚

Welcome to the documentation for our delightful Culinary Hub built with React and TypeScript. 🍲🍹

This project was made in one month by four students.

Project Overview

Our team of four first-year master's students in MIAGE proudly presents a comprehensive platform for culinary enthusiasts. This web application provides users with the ability to explore a vast collection of recipes, including culinary dishes, cocktails, and detailed nutrition information.

Showcase

Homepage

homepage

Search Results for Cocktails

cocktail_page

Recipe: Detailed Page

detailed_page

Nutrition Page

nutrition_page

Features

Culinary Recipes 🍽

Browse through a diverse range of culinary recipes, carefully curated to cater to various tastes and preferences.

Cocktail Recipes 🍹

Discover and shake up your favorite cocktails with our extensive collection of cocktail recipes.

Nutrition Information 🧁

Stay informed about the nutritional content of different products from various brands, including Nutriscore ratings and the Nova classification.

Technologies Used πŸ€–

  • React: The foundation of our project, facilitating the creation of interactive and dynamic user interfaces.
  • TypeScript: Enhancing code quality and providing a more robust development experience.
  • Components: Leveraging React's component-based architecture for modular and reusable code.
  • Hooks: Utilizing essential React hooks such as useState, useEffect, useNavigate, useLocation, and custom hooks for efficient state management and navigation.

External APIs βš™οΈ

Team Members 🏈

Project Structure πŸ—

culinary-hub/
.
β”œβ”€β”€ jest.config.js
β”œβ”€β”€ package.json
β”œβ”€β”€ README.md
β”œβ”€β”€ src
β”‚   β”œβ”€β”€ api
β”‚   β”‚   └── datadb.ts
β”‚   β”œβ”€β”€ App.css
β”‚   β”œβ”€β”€ App.tsx
β”‚   β”œβ”€β”€ assets
β”‚   β”‚   β”œβ”€β”€ fried-egg.png
β”‚   β”‚   β”œβ”€β”€ goBackIcon.png
β”‚   β”‚   β”œβ”€β”€ img-not-found.png
β”‚   β”‚   β”œβ”€β”€ magnifying-glass.png
β”‚   β”‚   β”œβ”€β”€ sample-recipe.jpg
β”‚   β”‚   β”œβ”€β”€ search.png
β”‚   β”‚   └── yt-logo.png
β”‚   β”œβ”€β”€ components
β”‚   β”‚   β”œβ”€β”€ Category
β”‚   β”‚   β”‚   β”œβ”€β”€ Category.stories.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Category.tsx
β”‚   β”‚   β”‚   └── style.css
β”‚   β”‚   β”œβ”€β”€ DetailRecipeCard
β”‚   β”‚   β”‚   β”œβ”€β”€ DetailRecipeCard.stories.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ DetailRecipeCard.tsx
β”‚   β”‚   β”‚   └── style.css
β”‚   β”‚   β”œβ”€β”€ Navbar
β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.stories.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Navbar.tsx
β”‚   β”‚   β”‚   └── style.css
β”‚   β”‚   β”œβ”€β”€ Novascore
β”‚   β”‚   β”‚   β”œβ”€β”€ Novascore.stories.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Novascore.tsx
β”‚   β”‚   β”‚   └── style.css
β”‚   β”‚   β”œβ”€β”€ Nutriscore
β”‚   β”‚   β”œβ”€β”€ NutritionInfoCard
β”‚   β”‚   β”œβ”€β”€ PreviewRecipeCard
β”‚   β”‚   β”œβ”€β”€ RandomRecipeCard
β”‚   β”‚   β”œβ”€β”€ SearchBar
β”‚   β”‚   β”œβ”€β”€ SwitchDakMode
β”‚   β”‚   β”œβ”€β”€ SwitchSetting
β”‚   β”‚   └── YouTubeVideo
β”‚   β”œβ”€β”€ constants
β”‚   β”‚   β”œβ”€β”€ RecipeType.ts
β”‚   β”‚   └── RouteBuilder.ts
β”‚   β”œβ”€β”€ context
β”‚   β”‚   └── DarkModeContext.tsx
β”‚   β”œβ”€β”€ dto
β”‚   β”‚   β”œβ”€β”€ FullRecipeDTO.ts
β”‚   β”‚   └── PreviewRecipeDTO.ts
β”‚   β”œβ”€β”€ errors
β”‚   β”‚   └── NoResultFoundError.ts
β”‚   β”œβ”€β”€ hooks
β”‚   β”‚   β”œβ”€β”€ cocktails
β”‚   β”‚   β”‚   β”œβ”€β”€ useCocktailById.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ useCocktailsByName.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ useCocktailsByTextQuery.ts
β”‚   β”‚   β”‚   └── useRandomCocktail.ts
β”‚   β”‚   β”œβ”€β”€ meals
β”‚   β”‚   β”‚   β”œβ”€β”€ useMealById.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ useMealsByName.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ useMealsByTextQuery.ts
β”‚   β”‚   β”‚   └── useRandomMeal.ts
β”‚   β”‚   └── nutrition
β”‚   β”‚       └── useNutritionInfo.ts
β”‚   β”œβ”€β”€ index.css
β”‚   β”œβ”€β”€ index.tsx
β”‚   β”œβ”€β”€ mappers
β”‚   β”‚   β”œβ”€β”€ FullDrinkMapper.ts
β”‚   β”‚   β”œβ”€β”€ FullMealMapper.ts
β”‚   β”‚   β”œβ”€β”€ NutritionInformationMappper.ts
β”‚   β”‚   β”œβ”€β”€ PreviewDrinkMapper.ts
β”‚   β”‚   └── PreviewMealMapper.ts
β”‚   └── pages
β”‚       β”œβ”€β”€ Cocktail
β”‚       β”‚   β”œβ”€β”€ Cocktail.tsx
β”‚       β”‚   └── style.css
β”‚       β”œβ”€β”€ Cocktails
β”‚       β”‚   β”œβ”€β”€ Cocktails.tsx
β”‚       β”‚   └── style.css
β”‚       β”œβ”€β”€ Home
β”‚       β”‚   β”œβ”€β”€ Home.tsx
β”‚       β”‚   └── style.css
β”‚       β”œβ”€β”€ Meal
β”‚       β”œβ”€β”€ Meals
β”‚       β”œβ”€β”€ Nutrition
β”‚       β”œβ”€β”€ NutritionResults
β”‚       └── SearchRecipes
β”œβ”€β”€ tsconfig.json
└── yarn.lock

License πŸ“–

This project is licensed under the MIT License - see the LICENSE file for details.


Thank you for exploring our Culinary Hub!

Quickstart πŸš€

In the project directory, you can run:

yarn

Run this command for installing project related dependencies. Do it going further.

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in your browser.

The page will reload when you make changes.
You may also see any lint errors in the console.

yarn test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

yarn build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.