Skip to content

Commit

Permalink
[team-03][FE][쥬&도리] 2주차 첫 번째: 컴포넌트 구현 (#143)
Browse files Browse the repository at this point in the history
* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

* [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

* Feat: 프로젝트 초기 세팅

ref: #8

* [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

* [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

* Docs: 프로젝트 및 팀원 소개(readme.md)

* Chore: Issues, PR templates 추가

ref: #1

Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Docs: 팀원 수정

- 팀원 한 마디 추가

* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: Jwu <sju02048@naver.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] MealContainer 레이아웃 작성 (#16)

* Chore: vscode debugger .gitingore에추가

* Chore: axios 라이브러리 추가

* Feat: MealContainer

- MealHeader
- Carousel -> MealCard여러개

* Refactor: useMemo 삭제

* Chore: TODO 주석 작성

- 컴포넌트 분리
- stlye 코드 분리
- status 코드

* [FE] BestMealContainer 레이아웃 작성 (#18)

* Chore: Prettier useTabs true로 수정

* Chore: axios 라이브러리 추가

* Feat: BestMealContainer 기본 레이아웃

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE] components단위로 파일 분리 (#20)

* Refactor: App.jsx에서 BestMealContainer import수정

* Refactor: MealContainer에서 Loader와 MealCard 분리

* Chore: components 폴더 관리

* [FE] 페어 리팩토링 (#21)

* Refactor: mockServerURL .env파일에서 관리

- constant폴더에서 관리

* Feat: setDefaultImage()함수 추가

- 인자로 image url을 받아서 false면 default이미지로 반환

* Chore: 폴더경로 상대경로에서 절대경로로 변경

- jsconfig.json파일 설정

* [FE] team-03브랜치에서 dev-FE로 최신화

commit a773a14
Merge: 2bc424b 1276077
Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Date:   Sun Apr 24 22:54:48 2022 +0900

    Merge pull request #59 from Louie-03/dev-BE

    [Team-03][BE][루이&쿠킴] - 특정 음식 타입 조회 기능

commit 2bc424b
Author: Jwu <sju02048@naver.com>
Date:   Sun Apr 24 17:06:36 2022 +0900

    [team-03][FE][쥬&도리] 1주차 두 번째 PR: 컴포넌트 단위 설계 (#66)

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: Jwu <sju02048@naver.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] MealContainer 레이아웃 작성 (#16)

    * Chore: vscode debugger .gitingore에추가

    * Chore: axios 라이브러리 추가

    * Feat: MealContainer

    - MealHeader
    - Carousel -> MealCard여러개

    * Refactor: useMemo 삭제

    * Chore: TODO 주석 작성

    - 컴포넌트 분리
    - stlye 코드 분리
    - status 코드

    * [FE] BestMealContainer 레이아웃 작성 (#18)

    * Chore: Prettier useTabs true로 수정

    * Chore: axios 라이브러리 추가

    * Feat: BestMealContainer 기본 레이아웃

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] components단위로 파일 분리 (#20)

    * Refactor: App.jsx에서 BestMealContainer import수정

    * Refactor: MealContainer에서 Loader와 MealCard 분리

    * Chore: components 폴더 관리

    * [FE] 페어 리팩토링 (#21)

    * Refactor: mockServerURL .env파일에서 관리

    - constant폴더에서 관리

    * Feat: setDefaultImage()함수 추가

    - 인자로 image url을 받아서 false면 default이미지로 반환

    * Chore: 폴더경로 상대경로에서 절대경로로 변경

    - jsconfig.json파일 설정

    Co-authored-by: YUNHO <kimyouknow@naver.com>
    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

commit 1276077
Merge: e8eca13 68b6e96
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 11:03:53 2022 +0900

    Merge pull request #22 from Louie-03/BE-feature-GET_api_products_meal_type

    [BE] 특정 음식 타입 조회 기능

commit 68b6e96
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 10:39:03 2022 +0900

    Fix: DiscountPolicy NPE 문제 해결

    - DiscountPolicy가 존재하지 않는 상품의 인수 테스트 추가

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit 5335f2e
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 10:37:09 2022 +0900

    Refactor: 계산 로직의 책임을 Product에서 DiscountPolicy로 위임

    - 기존 Product의 계산 로직을 DiscountPolicy의 calculateFixedPrice 메서드로 옮겼다.

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit 1e27697
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 17:47:25 2022 +0900

    Feat: meal type으로 음식 조회가 되지 않는 경우 조회 실패 구현(404 NOT FOUND)

commit db93682
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 17:27:13 2022 +0900

    Fix: Product 객체 fixedPrice 계산 로직 수정

    - 기존 연산 괄호 실수 -> 올바르게 변경
    - 테스트 코드 추가

commit 3b74382
Author: Louie <dhdustnr0134@naver.com>
Date:   Thu Apr 21 16:53:35 2022 +0900

    Refactor: Entity와 Domain 객체 분리

    - Entity를 Domain 객체로 변경해주는 DomainEntityMapper 구현
    - 변경된 코드에 따른 테스트 코드 수정

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit ca34b5a
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 15:17:09 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 리포지토리 구현

    - 테스트 작성

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit 06cebb6
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 15:15:29 2022 +0900

    Feat: product, product_image, discount_policy 테이블 DDL과 더미데이터 생성, 테스트 환경 구분

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit feb2909
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 09:32:59 2022 +0900

    Refactor: Product <-> Response Dto 변환 위치를 컨트롤러에서 서비스로 변경

commit fc57090
Author: Jwu <sju02048@naver.com>
Date:   Wed Apr 20 21:07:11 2022 +0900

    [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit 4f385a1
Merge: a002511 e8eca13
Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Date:   Wed Apr 20 18:29:42 2022 +0900

    Merge pull request #20 from Louie-03/dev-BE

    [Team-03][BE] 쿠킴 & 루이 - 데이터베이스 설계, Mock API Server, 배포 아키텍처, 프로젝트 세팅

commit f4c13a4
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 17:32:01 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 서비스 구현

    - 테스트 작성

commit 8e691b4
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 17:03:56 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 컨트롤러 구현

    - API : GET /api/products?meal={value}
    - 컨트롤러 테스트 구현
    - 서비스 계층은 Mock 처리
    - Product 도메인 객체 생성
    - ProductsDtoMapper 객체 생성 : Product 도메인 <-> ProductsMealTypeResponse 변환

commit b9873d0
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 15:57:24 2022 +0900

    Test: 특정 Products의 meal type 조회 기능 테스트코드만 작성

    - 인수 테스트 작성

commit e8eca13
Author: Louie <dhdustnr0134@naver.com>
Date:   Wed Apr 20 14:24:31 2022 +0900

    Feat: 프로젝트 초기 세팅

    ref: #8

Co-Authored-By: YUNHO <kimyouknow@naver.com>
Co-Authored-By: Louie <dhdustnr0134@naver.com>
Co-Authored-By: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] Styled Component Best Header 부분 (#25)

* Feat: 프로젝트 초기 세팅

ref: #8

* [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

* [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

* Docs: 프로젝트 및 팀원 소개(readme.md)

* Chore: Issues, PR templates 추가

ref: #1

Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Docs: 팀원 수정

- 팀원 한 마디 추가

* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Chore: env 추가

* Style: SVG 아이콘 추가

* Feat: theme 추가

* Style: 폰트 추가

* Style: 파일 이름 변경

* Design: BestMeal 헤더&네비게이션

Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] PR 반영 및 styledCSS 수정 (#28)

- 두 번째 PR 반영
- 코드 스타일 리팩토링
ref: #26

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE] 일반 Meal 컴포넌트 UI 구현 (#39)

* Design: Meal Card

styles.js 분리

* Design: 카드에 hover시 택배서비스 표시

* Design: MealConatiner  헤더 및 레이아웃

* Design: 캐러셀 컨테이너

- svg추가

* Chore: Card컨테이너에서 hover할 때 보여지는 배송정보 코드 상 위치 변경

- 컴포넌트 하단으로 빼기

* Build: mock servser url 환경변수로 관리

.env파일에서 관리하던 url을 각 로컬에서 관리하기

* Refactor: mock sever 403에러 일때 constant에 있는 mock데이터 사용

* Design: theme 세부속성 분해할당해서 접근

이전: theme -> theme.color
이후: theme: {color} -> color

* Refactor: mealCard hover 속성 js변수에서 css로 제어

* Chore: 주석 정리

* [FE] Best 컴포넌트 구현 (#40)

* Feat: 금액 toLocalString로 구분

* Feat: mock api -> mock data로 수정

- postman api 호출횟수 초과해서 로컬로 값 보내는 걸로 수정

* Design: Best 컴포넌트 추가

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE]  캐러셀 디자인, getCarouselDesign() (#48)

* Design: App에서 Main 컴포넌트 분리

* Desgin: 캐러셀 디자인, getCarouselDesign()

- getCarouselDesign: 이미지 사이즈, 이미지 개수에 따라 동적으로 UI 결정

* [FE] GNB Design 구현 (#49)

* Style: 오타 수정

* Design: 글로벌스타일 button poiner 추가

* Design: Header Component 추가

- 헤더에 hover 시 레이아웃 나타나는 디자인
- 글씨, 아이콘 hover 디자인
- 전체적인 헤더 UI 디자인

* [FE] BestMealCard 컴포넌트와 MealCard 컴포넌트 통합 (#50)

* Refactor: BestMeal Container mock데이터 분리 및 탭 변수 수정

    - MOCK_DATA_JS -> MOCK_BEST_MEAT: 변수명 변경 및 contant로 이동
    - BEST_SUBTITLE -> BEST_TAB_TYPE: 변수명 변경 및 api
    Params추가
    - Tabs컴포넌트 BestMeals컴포넌트처럼 양식 통일

* Refactor: BestMealCard를 MealCard컴포넌트와 통일

- MealCard를 받을 때 이미지 사이즈 넘겨받기

* Feat: BestMeal에서 findTargetTab()함수

선택한 탭의 id를 인자로 받고 apiParams를 반환함.

* Chore: Main위치 src/components -> src/pages

* Chore: 메인 레이아웃

헤더 mainWidth설정

* Chore: 함수 선언식 -> arrow function

* Design 캐러셀 양 옆 svg 스타일 수정

- border 없애기
- 크기 키움

* Fix: Main 경로 오타 수정

* Refactor: 호버창 컴포넌트 단위로 분리

* Refactor: state값 이용하지 않고 hover로 수정

* Design: 컴포넌트 간 간격 수정

* [FE] 컴포넌트 리팩토링 (#51)

Refactor: 호버창 컴포넌트 단위로 분리

Refactor: state값 이용하지 않고 hover로 수정

Design: 컴포넌트 간 간격 수정

* Chore: 오타수정

* Chore: 충돌해결하면서 지우지 못한 폴더 삭제

- constant
- util

* Chore: reset.css 삭제

* [FE} 캐러셀 컴포넌트 구현 (#58)

* Chore: mock server에서 실제서버url로 변경

* Feat: Carousel  구현

* Feat: Carousel 재사용성 고려해서 children을 밖에서 선언

* [FE] Custom Axios 작성 및 데이터 fetch 기능 (#59)

* Style: API 변수이름 수정

* Fix: price 오타 수정

* Delete: PR 충돌 오류로 삭제

* Style: 여백 오타 수정

* Feat: useAxios 추가

* Design: 더보기 버튼

* Feat: 카테고리 더보기

* Design: 버튼 가운데 정렬

* Feat: 카테고리 추가 렌더링

버그 고쳐야함

* Feat: 추가 데이터 버튼 감추기

Co-authored-by: yunho <kimyouknow@naver.com>
Co-authored-by: Jwu <sju02048@naver.com>

Co-authored-by: YUNHO <kimyouknow@naver.com>
Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
  • Loading branch information
5 people committed Apr 28, 2022
1 parent e00348e commit 43ee842
Show file tree
Hide file tree
Showing 37 changed files with 969 additions and 221 deletions.
1 change: 1 addition & 0 deletions BE/src/main/resources/application.properties
@@ -0,0 +1 @@

13 changes: 13 additions & 0 deletions BE/src/test/java/sidedish/com/ComApplicationTests.java
@@ -0,0 +1,13 @@
package sidedish.com;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ComApplicationTests {

@Test
void contextLoads() {
}

}
1 change: 1 addition & 0 deletions FE/.env
@@ -0,0 +1 @@
REACT_APP_API_SERVER_URL=${CODE_SQUAD_SIDE_DISH_SERVER}
1 change: 1 addition & 0 deletions FE/.gitignore
Expand Up @@ -14,6 +14,7 @@
# misc
.DS_Store


.env

.env.local
Expand Down
67 changes: 32 additions & 35 deletions FE/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

40 changes: 7 additions & 33 deletions FE/src/App.jsx
@@ -1,41 +1,15 @@
import React, { useCallback, useEffect, useState } from "react";
import axios from "axios";
import BestMealContainer from "components/BestMealContainer";
import MealContainer from "components/MealContainer";
import { MOCK_SERVER_URL } from "constant";
import React from "react";
import Main from "pages/Main";
import Header from "components/Header";

function App() {
const [meals, setMeals] = useState({
mealHeader: "",
mealCards: [],
});
const fetchCategoryMeal = useCallback(async () => {
try {
const { status, data } = await axios.get(`${MOCK_SERVER_URL}/api/products?meal=main`);
// TODO: status 코드 300번 구간도 포함해야하나 공부해보기
if (status >= 400) {
throw Error(`${status}: 데이터를 받아오는 도중 에러 발생`);
}
console.log(data);
setMeals({
mealHeader: "식탁을 풍성하게 하는 정갈한 밑반찬",
mealCards: data,
});
} catch (error) {
console.error(error);
}
}, []);

useEffect(() => {
fetchCategoryMeal();
}, []);
const App = () => {
return (
<>
<BestMealContainer />
<MealContainer meals={meals} />
<Header />
<Main />
<div className="Modal"></div>
</>
);
}
};

export default App;
65 changes: 65 additions & 0 deletions FE/src/Pages/Main/index.jsx
@@ -0,0 +1,65 @@
import React, { useCallback, useEffect, useState } from "react";
import BestMealContainer from "components/BestMealContainer";
import MealContainer from "components/MealContainer";
import { Container, MoreBtn } from "./style";
import { useAxios } from "hooks/useAxios";
import Loader from "components/Loader";

const CATEGORY_TYPE = [
{ id: 100, title: "든든한 메인 요리", apiParams: "main" },
{ id: 200, title: "뜨끈한 국물요리", apiParams: "soup" },
{ id: 300, title: "정갈한 밑반찬", apiParams: "side" },
];

const Main = () => {
const [currIndex, setCurrIndex] = useState(0);
const [mealsArr, setMealsArr] = useState([]);
const { response: meals } = useAxios({
method: "get",
url: `/products`,
params: { meal: CATEGORY_TYPE[currIndex].apiParams },
});

const addCardHandler = useCallback(() => {
setCurrIndex((prev) => prev + 1);
}, []);

const updateMealsArr = useCallback(() => {
// FIXME: 아래와 같은 문제가 있지만 일단 동작은 하게 하기 위해 아래와 같은 코드를 짬.
// 문제: useAxios의 response가 두 번씩 호출되는데(초기 값, 요청 응답값) 새롭게 fetch 요청을 할 때 초기 값으로 이전 요청에 대한 응답값을 가지고 있음.
const filterSameKey = (prev) => {
const temp = [...prev];
const length = prev.length;
const newData = {
id: CATEGORY_TYPE[currIndex].id,
mealHeader: CATEGORY_TYPE[currIndex].title,
mealCards: meals,
};
if (temp[length - 1]?.id === newData.id) {
temp.pop();
}
temp.push(newData);
return temp;
};
setMealsArr(filterSameKey);
}, [currIndex, meals]);

useEffect(() => {
updateMealsArr();
}, [currIndex, meals, updateMealsArr]);

return (
<Container>
<BestMealContainer />
{!mealsArr.length ? (
<Loader />
) : (
mealsArr.map(({ id, ...containerInfo }) => <MealContainer key={id} containerInfo={containerInfo} />)
)}
{/* FIXME: 매직 넘버 수정해야함 */}
{currIndex < 2 ? <MoreBtn onClick={addCardHandler}>더 보기</MoreBtn> : <></>}
</Container>
);
};

export default Main;
25 changes: 25 additions & 0 deletions FE/src/Pages/Main/style.js
@@ -0,0 +1,25 @@
import styled from "styled-components";

export const Container = styled.main`
width: ${({ theme: { layout } }) => layout.mainWidth};
padding-top: 140px;
margin: 0 auto;
display: flex;
flex-direction: column;
align-items: center;
`;

export const MoreBtn = styled.button`
margin-top: 80px;
padding: 16px 24px;
width: 153px;
height: 62px;
font-size: ${({ theme: { fontSize } }) => fontSize.large};
border: 1px solid ${({ theme: { color } }) => color.grey4};
background-color: ${({ theme: { color } }) => color.white};
border-radius: 10px;
&:hover {
background-color: ${({ theme: { color } }) => color.grey4};
}
`;
3 changes: 3 additions & 0 deletions FE/src/assets/angle-left.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions FE/src/assets/angle-right.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions FE/src/assets/cart.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions FE/src/assets/logo.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions FE/src/assets/man.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions FE/src/assets/search.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 0 additions & 31 deletions FE/src/components/BestMealCard/index.jsx

This file was deleted.

0 comments on commit 43ee842

Please sign in to comment.