React, TypeScript, Rest API를 활용한 라이프 스타일 홈 데코·인테리어 쇼핑몰 프로젝트입니다.
성별과 연령에 상관없이 모두가 관심을 가지고 이용할 수 있는 인테리어 관련 주제로 선정하였으며,
‘집(Home)’ + ‘가구(Furniture)’ + ‘가고싶다.(Want To Go)’ 의 합성어로 언제 어디서나 집에 가고싶게 만드는 제품을 판매하다는 의미의 쇼핑몰입니다.
개발기간 : 2023. 05. 30 ~ 2023. 07. 01
리팩토링 : 2024. 07. 24 ~ ing
배포주소 : DEMO
AWS 아키텍처 | Cache Hit | Lighthouse 개선 |
---|---|---|
1. 번들 크기 최적화를 통해 First Contentful Paint(FCP) 개선
- vite.config.json의 manualChunks를 설정해 라이브러리 청크 분리
- Page 단위로 lazy와 suspense 적용하여 필요한 리소스만 로드
2. 이미지 최적화를 통해 Largest Contentful Paint(LCP) 개선
- Intersection Observer API를 활용해 뷰포트에 보이는 이미지만 로드
- imagemin 플러그인을 사용해 전체 이미지 용량 65.51% 감소
최적화 전 | 최적화 후 |
---|---|
- React-Router-Dom의 outlet 중첩 라우팅을 활용한 레이아웃 구성
- Redux를 사용한 전역 상태 관리
- 재사용을 높이기 위한 세부 컴포넌트 구성
- 더 나은 UX를 위한 로딩 스피너 추가
- 카테고리 (Navbar) : useNavigate, NavLink를 활용한 페이지 라우터 관리
- 제품 검색 기능 : useState, useNavigate, ChangeEvent를 활용한 검색 기능 구현
- 이미지 슬라이더 : React-slider를 활용한 메인 페이지 이미지 슬라이더 구현
메인 페이지 | About 페이지 |
---|---|
- 상품 목록 페이지 : productItem 컴포넌트로 재사용성을 높이고 MouseEvent와 useState를 활용한 카테고리 필터 구현
- 상품 상세 페이지 : useParams를 활용한 상품 상세 정보 조회(ID), Redux를 활용한 장바구니 기능 구현
- 장바구니 담기 기능 : Redux, useDispatch, useSelector, useNavigate, useParams를 활용한 장바구니 상태 관리 구현
- 결제 페이지 : useNavigate, Redux를 활용한 페이지 라우팅, 데이터 전달 구현
상품 목록 페이지 | 상품 상세 페이지 |
---|---|
- 장바구니 목록 조회 : Redux, useSelector, useNavigate를 활용한 장바구니 상태 관리 구현
- 전체/선택 상품 구매 : Redux를 활용하여 상품 선택 유무에 따른 조건부 렌더링 구현
- 결제 기능 : Redux를 활용한 결제 상세 정보 출력 및 사용자 계좌 유무에 따른 조건부 렌더링 구현
장바구니 페이지 | 결제 페이지 |
---|---|
- 주문 내역 조회
- 상품 구매 취소, 상품 구매 확정
- 상세 정보 조회 : 주문 시간(최신순)에 따른 상품 구매 내역 정렬 구현
- 계좌 관리
- 전체 계좌 조회
- 계좌 등록 : Modal을 통한 계좌 등록, 은행 선택시 은행 코드 자동 입력 구현, 자리수에 따른 여러 개의 input 상태 관리
- 계좌 삭제 : 컴포넌트를 활용한 등록 계좌 리스트 출력, 등록 계좌 여부에 따라 조건부 렌더링 구현
- 개인 정보 수정: 비밀번호 재확인 기능 구현, React-Hook-form을 통한 코드 단순화 및 유효성 검사 구현
마이 페이지 (주문 내역 관리) | 마이 페이지 (주문 내역 상세) |
---|---|
마이 페이지 (계좌 관리) | 마이 페이지 (계좌 등록 모달) |
---|---|
마이 페이지 (계좌 확인/삭제) | 마이 페이지 (비밀번호 재확인) |
---|---|
마이 페이지 (개인정보 수정) |
---|
- 회원가입 : React-Hook-Form을 이용한 비제어 컴포넌트 관리 및 유효성 검사 구현
- 로그인 : useState를 통해 로그인 기능 구현
- 로그인 인증 : App.tsx에서 useEffect를 이용한 모든 하위 페이지 로그인 인증 구현
- 로그아웃 : Redux를 사용해 Header 로그아웃 UI 구현
회원가입 페이지 | 로그인 페이지 |
---|---|
검색창 | 로딩 스피너 |
---|---|
- 전체 사용자 목록 조회
- 상품 관리
- 전체 상품 목록 조회
- 상품 등록 : Select 컴포넌트를 이용한 상품 태그 등록 구현
- 상품 정보 수정 : Modal 통한 상품 정보 수정 및 기존 정보 확인 기능 구현
- 상품 삭제
- 주문 내역 관리
- 전체 거래 내역 조회, 거래 취소, 거래 확정
관리자 페이지 (사용자 관리) | 관리자 페이지 (상품 관리) |
---|---|
관리자 페이지 (주문 내역 관리) |
---|
$ git clone [email protected]:ChoEun-Sang/sweethome.git
$ cd sweethome
$ npm install
$ npm run dev