pre-onboarding-7th-2-1-9
👑 권준 | 김경훈 | 김수정 |
@jun-05 | @tirhande | @crystal993 |
송슬기 | 오나래 | 이창훈 | 전이진 |
@songseul | @NR0617 | @anotheranotherhoon | @pongdang |
차량 대여를 위해 차량 목록을 불러와서 표시해주는 서비스입니다.
### Installation
# Repositorie Clone
git clone https://github.com/Wanted-07-team-9/pre-onboarding-7th-2-1-9.git
# npm으로 설치 진행
pre-onboarding-7th-2-1-9 % % npm install
### Usage
# Local Dev Server 실행
pre-onboarding-7th-2-1-9 % npm run dev
# Build
pre-onboarding-7th-2-1-9 % npm build
📂 pre-onboarding-7th-2-1-9
┣ 📂 page
┃ ┣ 📂 api # SSR api 호출 (미사용)
┃ ┗ 📂 car # 차량상세 페이지를 위한 디렉토리입니다.
┣ 📂 public
┣ 📂 src
┃ ┣ 📂 api # axios 호출 관련
┃ ┣ 📂 components # 재사용성 높은 컴포넌트들 모음
┃ ┣ 📂 container # 페이지별 컴포넌트, 스타일 모음
┃ ┣ 📂 stores # context api 저장소
┃ ┣ 📂 styles # global style
┃ ┗ 📂 utils # 재사용성 높은 함수 모음
┗ 📄 README.md
- Figma 상의 디자인 및 기능 구현
- 모바일 웹 기준으로 제작
- 450px ~ 360px까지 고려해서 제작
- 필수 요구 사항
- Figma 상의 디자인 및 기능 구현
//carList가 비어있을때 Empty 컴포넌트 리턴
const { carList } = useCar();
if (!carList.length) return <Empty text={'차량이 없습니다.'} />;
- 차량 불러오는 중 처리
// 로딩중이면 로딩카 컴포넌트 소환
{
isLoading && <LoadingCar />;
}
- 차랑 상세
const { isLoading } = useCarDetail();
if (isLoading) {
return <LoadingCar />;
}
return (
<>
{isLoading && <LoadingCar />}
<DetailSection>
<Summary />
<SubDecription />
<Blank />
</DetailSection>
</>
);
- SEO 구현
- 카카오톡, 페이스북에 공유 시 아래의 내용이 미리보기로 노출되도록 해야 함
- 제목: car.brand + car.name
- 내용: 월 car.amount 원
- 사진: 차량 사진
Discord | Kakao | |
---|---|---|
// next-seo 라이브러리를 사용하여 meta 태그 작성
<NextSeo
title={`${data[0].attribute.brand} ${data[0].attribute.name}`}
description={curreny}
canonical="https://pre-onboarding-7th-2-1-9.vercel.app/"
openGraph={{
type: 'website',
url: `https://pre-onboarding-7th-2-1-9.vercel.app/car/${data[0].id}`,
title: `${data[0].attribute.brand} ${data[0].attribute.name}`,
description: curreny,
images: [{ url: data[0].attribute.imageUrl }],
site_name: 'B2C 차량대여 서비스',
}}
/>
- 페이지 전환시 부드러운 애니메이션 효과 추가
커밋 규칙
코딩 컨벤션 규칙
- 컴포넌트의 ID사용은 지양한다.
- react의 state는 여러개 사용시 최소 집합을 찾아 사용한다.
- 컴포넌트의 이벤트에서 불필요한 익명함수를 사용하지 않는다. (예시: 함수의 인자가 event 하나인 경우)
- 코드를 설명하는 주석은 가급적 사용하지 않는다.
- 상수는 영문 대문자 스네이크 표기법(Snake case)를 사용한다.(예시: SYMBOLIC_CONSTANTS)
- 반환 값이 불린인 함수는 'is'로 시작한다
- const와 let은 사용 시점에 선언 및 할당한다.
- 함수는 사용 전에 선언해야 하며, 함수 선언문은 변수 선언문 다음에 오도록 한다.
- 이벤트 핸들러는 'on'으로 시작한다.
- 한 줄짜리 블록일 경우라도 {}를 생략하지 않으며 명확히 줄 바꿈 하여 사용한다.
Lint, Formatter 규칙
printWidth: 100, // printWidth default 80 => 100 으로 변경
singleQuote: true, // "" => ''
arrowParens: 'avoid', // arrow function parameter가 하나일 경우 괄호 생략
printWidth: 100, // printWidth default 80 => 100 으로 변경
singleQuote: true, // "" => ''
arrowParens: 'avoid', // arrow function parameter가 하나일 경우 괄호 생략