sgsg9447 / tripbtoz

원티드 프리온보딩 프론트엔드 코스 5팀 5주차 기업과제 - 트립비토즈

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

1. 프로젝트 설치 및 실행

git clone https://github.com/Wanted-Pre-Onboarding-FE-Team5/tripbtoz

npm i

npm start

//windows 운영체제에서 npm start 명령어로 json-server 실행이 안될 경우 추가로 아래 명령어 사용
npm run server

//json-server port 설정 = "json-server --watch ./database/database.json --port 8000" 

2. 프로젝트 목표

  • 예약 페이지 개발
  • 체크 인/아웃 날짜를 선택할 수 있는 캘린더 구현
  • 투숙객 수를 입력할 수 있는 인풋 폼 구현
  • 제공되는 hotels.json 파일의 데이터 중 체크 인/아웃 기간과 인원수에 해당하는 호텔들을 조회
  • 조회 된 호텔을 무한 스크롤로 노출
  • 호텔 하나를 선택하게 되면 선택한 (체크 인/아웃 - 투숙객 수 - 호텔명) 정보를 가지는 데이터를 로컬 스토리지에 json타입으로 저장.

3. 역할 분담

팀원 이름 기능
김슬기 캘린더 구현
이유미 호텔 정보 렌더링 담당
김연진 전체 레이아웃,스타일 담당

4. 기술스택

typescript react-router-dom styled-components styled-reset json-server react-query date-fns uuid

5. 캘린더 제작

  • 체크 인/아웃 날짜를 선택할 수 있는 캘린더 구현
  • 투숙객 수를 입력할 수 있는 인풋 폼 구현
  • 오늘 날짜부터 12개월까지 보여지는 캘린더를 반응형으로 구현
  • 이번달의 지난날은 모두 선택되지 않아야 함
  • 처음 캘린더를 선택할 때 default로 일주일 뒤 1박으로 체크인 되도록 함
  • 처음 선택한 날이 체크인이 되며 두 번째 선택한 날이 체크아웃으로 설정됨
  • 처음 선택한 날보다 이전 날짜를 선택한 경우 처음 선택한 날짜가 초기화 되고 두 번째 선택한 날짜가 체크인으로 됨
  • 시작일(체크인)과 종료일(체크아웃) 날짜는 highlighting 되며 체크인과 체크아웃 사이의 날짜도 동일하게 highlighting 됨
  • 시작일(체크인)과 종료일(체크아웃)을 선택한 상태에서 다른 날짜를 선택하면 기존 선택값은 초기화 되며, 선택한 다른 날짜가 시작일(체크인)이 됨

6. 구현 화면

스크린샷 2022-09-06 오전 4 34 41

스크린샷 2022-09-06 오전 4 37 15

7. 구현과정

8. 디렉토리구조

src
 ┣ api
 ┃ ┗ api.ts
 ┣ components
 ┃ ┣ calendar
 ┃ ┃ ┣ Body.tsx
 ┃ ┃ ┣ Calendar.tsx
 ┃ ┃ ┣ Dates.tsx
 ┃ ┃ ┗ Head.tsx
 ┃ ┣ common
 ┃ ┃ ┣ Loading.tsx
 ┃ ┃ ┣ NavigationBar.tsx
 ┃ ┃ ┗ SearchBar.tsx
 ┃ ┣ hotelList
 ┃ ┃ ┣ HotelItem.tsx
 ┃ ┃ ┗ HotelList.tsx
 ┃ ┗ modal
 ┃ ┃ ┣ CalendarModal.tsx
 ┃ ┃ ┗ CountModal.tsx
 ┣ hooks
 ┃ ┣ useDatabase.ts
 ┃ ┣ useFilter.tsx
 ┃ ┣ useInfiniteScroll.tsx
 ┃ ┗ useLocalStorage.ts
 ┣ pages
 ┃ ┣ Hotel.tsx
 ┃ ┣ Landing.tsx
 ┃ ┗ Reservation.tsx
 ┣ router
 ┃ ┗ Router.tsx
 ┣ styles
 ┃ ┣ GlobalStyles.tsx
 ┃ ┣ Hotel.style.tsx
 ┃ ┣ HotelItem.style.tsx
 ┃ ┗ HotelList.style.tsx
 ┣ types
 ┃ ┣ databaseType.ts
 ┃ ┣ localStorageType.ts
 ┃ ┗ queryType.ts
 ┣ utils
 ┃ ┣ dateUtils.ts
 ┃ ┗ infiniteScroll.ts
 ┣ App.tsx
 ┣ index.tsx
 ┣ react-app-env.d.ts
 ┗ setupTests.ts

About

원티드 프리온보딩 프론트엔드 코스 5팀 5주차 기업과제 - 트립비토즈


Languages

Language:TypeScript 96.3%Language:HTML 3.7%