Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[클린코드 리액트 3기 신승현] 장바구니 미션 Step1 #53

Open
wants to merge 119 commits into
base: osdoonhyun
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 61 commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
56c8c64
chore: Boilerplate Vite react-ts 설치
osdoonhyun Mar 26, 2024
4afa899
chore: tanstack react query / router, zustand, msw, storybook 설치
osdoonhyun Mar 26, 2024
ca5778c
feat: shopping cart css 추가
osdoonhyun Mar 26, 2024
cb233a5
chore: 절대 경로 설정
osdoonhyun Mar 27, 2024
271c238
docs: 요구 사항 정리
osdoonhyun Mar 27, 2024
cfbb181
feat: routing 설정
osdoonhyun Mar 27, 2024
c2264ac
feat: Header layout 추가
osdoonhyun Mar 27, 2024
6c6da2d
feat: msw api mocking 설정
osdoonhyun Mar 27, 2024
28f4ab0
feat: tanstack query 설정
osdoonhyun Mar 27, 2024
94b0351
rename: pages로 파일 이동
osdoonhyun Mar 27, 2024
fb261a4
rename: pages 폴더 이동
osdoonhyun Mar 28, 2024
660d339
chore: router-devtools 설치
osdoonhyun Mar 28, 2024
91fd7f4
feat: 상품 목록, 상품 상세 api , mocking, layout 구현
osdoonhyun Mar 28, 2024
798f2bf
chore: axios 설치
osdoonhyun Mar 29, 2024
0a1eaac
feat: axios로 수정
osdoonhyun Mar 29, 2024
586d829
feat: zustand 활용하여 cartStore 생성
osdoonhyun Mar 29, 2024
26a79e6
feat: 장바구니 클릭시 새로운 상품 추가 mocking api, 기능 추가
osdoonhyun Mar 29, 2024
31953a7
feat: 장바구니 페이지 layout 구현
osdoonhyun Mar 31, 2024
23b8fd3
feat: 장바구니 api, query 구현
osdoonhyun Mar 31, 2024
29e3cf3
rename: 파일 위치 변경
osdoonhyun Apr 1, 2024
87c49d1
feat: Cart, Product type 변경
osdoonhyun Apr 1, 2024
d5eb0eb
feat: 상품 상세에서 장바구니 클릭 시 상품 추가, 장바구니 페이지로 이동 기능 구현
osdoonhyun Apr 1, 2024
6e4b4cb
feat: cartStore 상품 수량 수정, 상품 선택, 제거 기능 추가
osdoonhyun Apr 1, 2024
ecc34da
feat: cartStore의 상품 선택 기능 제거
osdoonhyun Apr 2, 2024
a71cba1
feat: CartTable 생성, 상품 선택 기능 구현
osdoonhyun Apr 2, 2024
2573dab
refactor: 장바구니 빈 상태일 경우 UI 처리
osdoonhyun Apr 2, 2024
e578481
feat: 상품 수량 증감 기능 추가, 결제 총수량, 금액 계산 기능 추가
osdoonhyun Apr 2, 2024
e4d6e3b
feat: 장바구니 상품 수량 제한 기능 추가
osdoonhyun Apr 2, 2024
9a4a82d
feat: AlertDialog css 추가
osdoonhyun Apr 3, 2024
eb07013
feat: AlertDialog Store, Container 구현, 적용
osdoonhyun Apr 3, 2024
dadb84d
refactor: 장바구니 관련 유틸함수 추가
osdoonhyun Apr 4, 2024
19c82e0
feat: 장바구니 관련 유틸함수 추가
osdoonhyun Apr 4, 2024
c16728e
feat: 장바구니 비우기 store 추가
osdoonhyun Apr 4, 2024
0270983
feat: 장바구니 상품 삭제 기능, AlertDialog 기능 추가
osdoonhyun Apr 4, 2024
96326cb
refactor: 장바구니 담기 클릭 시 상품 존재 여부에 따른 AlertDialog 처리
osdoonhyun Apr 5, 2024
f3fb7a7
feat: 장바구니 비우기 기능 추가
osdoonhyun Apr 5, 2024
31faa5f
feat: 주문하기 클릭 시 장바구니 비우고 주문 페이지로 이동 기능 추가
osdoonhyun Apr 5, 2024
32a8f62
feat: 장바구니 주문하기 mockAPI, mutation, 기능 추가
osdoonhyun Apr 8, 2024
df5816e
feat: 주문하기 페이지 layout, 주문 목록 조회 query, mockAPI 기능 구현
osdoonhyun Apr 8, 2024
85be1cc
feat: 주문 내역 상세 route 추가
osdoonhyun Apr 9, 2024
89fcab4
feat: 주문 내역 상세 api, query 추가
osdoonhyun Apr 9, 2024
f7c7ee3
feat: 주문 내역 상세, 주문 목록 구현
osdoonhyun Apr 9, 2024
b35b2ad
refactor: 주문 목록, 주문 상세 내역 컴포넌트 모듈화 작업
osdoonhyun Apr 9, 2024
51b34a6
refactor: formatter, calculate 유틸함수 생성, 적용
osdoonhyun Apr 10, 2024
a33a289
rename: 파일명, 폴더명 수정
osdoonhyun Apr 10, 2024
424e36f
feat: 주문/결제 페이지 주문결과 쿼리 추가
osdoonhyun Apr 11, 2024
23b2ec0
refactor: 장바구니 페이지 상품 주문 로직 관심사 분리
osdoonhyun Apr 11, 2024
012b745
refactor: CartTable 컴포넌트 분리 리팩토링
osdoonhyun Apr 11, 2024
f3ab9ce
refactor: OrderResult, OrderList 컴포넌트 분리 리팩토링
osdoonhyun Apr 11, 2024
b1e4498
refactor: props 전달 방식 변경
osdoonhyun Apr 11, 2024
7f69898
feat: 주문할 상품이 0개이면 버튼이 비활성화 기능 추가
osdoonhyun Apr 11, 2024
aff5f4e
feat: 장바구니 상품 증감 버튼 최대 최소 갯수에 따른 비활성화 기능 추가
osdoonhyun Apr 12, 2024
e6f52af
feat: 이미지, style 추가
osdoonhyun Apr 12, 2024
a6cfe0b
refactor: mock data, handler 개별 엔드포인트에 따라 분리
osdoonhyun Apr 12, 2024
39bf94e
refactor: 불필요한 주석 제거
osdoonhyun Apr 13, 2024
768daf6
feat: cartStore persist 기능 추가
osdoonhyun Apr 13, 2024
826af09
refactor: CartProduct 타입에서 selected 제거, 쿼리 Order 타입 추가
osdoonhyun Apr 13, 2024
481f3b6
refactor: 데이터 없을 시 옵셔널 체이닝, UI 문구 추가 작업
osdoonhyun Apr 13, 2024
1316985
refactor: cartStore에서 Action 분리
osdoonhyun Apr 13, 2024
cb657e7
refactor: 기본 홈에서 상품 목록 페이지로 리다이렉트
osdoonhyun Apr 13, 2024
0167c34
refactor: 쿼리 키 및 쿼리 캐싱 재설정
osdoonhyun Apr 14, 2024
3413698
chore: 필요 없는 주석, 매개변수 삭제
osdoonhyun May 15, 2024
f36157f
refactor: 타입 네이밍 수정, 반영
osdoonhyun May 15, 2024
2f6c0c9
refactor: 일반적인 유틸함수로 수정
osdoonhyun May 15, 2024
1f0ef22
refactor: cart, order, product QueryKey 생성
osdoonhyun May 16, 2024
2840be5
fix: 상품 업데이트 시 타겟 상품과 업데이트 할 상품의 비교 로직 수정
osdoonhyun May 20, 2024
bc42665
fix: zustand cart store actions 분리 수정
osdoonhyun May 20, 2024
dbe8ab9
chore: react-intersection-observer 설치
osdoonhyun May 21, 2024
200ef6c
feat: 상품 목록, intersection observer 활용한 무한 스크롤 적용
osdoonhyun May 21, 2024
8376455
feat: 상품 목록 추가
osdoonhyun May 21, 2024
3692978
chore: router, query devtools 설치
osdoonhyun May 22, 2024
18816d5
feat: 장바구니 상품 삭제 mock handlers, api, mutation 추가 / 적용
osdoonhyun May 22, 2024
08ebec3
refactor: cartStore 상품삭제 params 타입 변경, 장바구니 주문 시 주문한 상품만 삭제되도록 수정
osdoonhyun May 24, 2024
85dc166
fix: 주문/결제 페이지 orderResult -> orderDetail로 query, route 수정
osdoonhyun May 24, 2024
95b9f54
feat: 주문 내역 없는 경우 빈 상태 메시지 표시 기능 추가
osdoonhyun May 24, 2024
ea89779
feat: 주문 상세 페이지 제목, 결제금액 정보 추가, 주문 상세 페이지 장바구니 dialog 기능 삭제
osdoonhyun May 24, 2024
01eb1ad
feat: 주문 상세에 장바구니 담기 dialog 추가
osdoonhyun May 24, 2024
fdb8185
feat: 상품 상세 장바구니 담기 dialog 추가
osdoonhyun May 24, 2024
a6eac4c
refactor: 주문 등록 mutation optimistic updates 적용
osdoonhyun May 24, 2024
ae3a850
chore: panda-css 설치 및 설정
osdoonhyun May 25, 2024
b4f91fd
rename: common 폴더로 이동, panda-css적용
osdoonhyun May 30, 2024
179bf2f
feat: layout Container 추가, panda-css 적용
osdoonhyun May 30, 2024
9093c99
refactor: panda-css 적용
osdoonhyun May 30, 2024
0367231
refactor: Button, IconButton, CheckBox, Image, QuantityCounter 추가 pan…
osdoonhyun May 31, 2024
5d07834
refactor: orderStore 생성, 주문 정보 서버 상태, 클라이언트 상태로 수정
osdoonhyun Jun 5, 2024
790d60a
feat: sessionStorage utils 추가
osdoonhyun Jun 7, 2024
4d8f974
feat: 상품 목록 페이지 뒤로가기 및 페이지 전환시 기존 페이지 및 스크롤 위치 기억 훅 추가 적용
osdoonhyun Jun 7, 2024
8f1d9f4
refactor: useScrollPosition 훅 렌더링 시점에 따라 스크롤 위치 저장, 설정 구분
osdoonhyun Jun 9, 2024
fff08ab
feat: localStorage utils, storage keys 추가
osdoonhyun Jun 10, 2024
3cd6203
feat: 장바구니, 주문정보의 Client, Server 데이터 동기화 작업
osdoonhyun Jun 10, 2024
8dfa7e4
chore: tanstack virtual 설치
osdoonhyun Jun 15, 2024
ae8c4b6
refactor: 상품 목록 페이지 기반 -> 커서 기반으로 수정, 뒤로가기 기능 스크롤 위치 -> 스크롤 인덱스 기억으로 …
osdoonhyun Jun 18, 2024
de615b8
fix: 장바구니, 주문 정보에 대한 클라이언트, 서버 상태 동기화 시 이전 데이터 가져오는 버그 수정
osdoonhyun Jun 19, 2024
ba9d56e
chore: react loading skeleton 설치
osdoonhyun Jun 25, 2024
1645e34
chore: react-virtual 버전 업데이트
osdoonhyun Jun 28, 2024
cdcff58
refactor: 가상스크롤 걷어내고 무한스크롤로 구현
osdoonhyun Jun 28, 2024
4528b6e
feat: 상품 loading skeleton 추가
osdoonhyun Jun 28, 2024
91e2662
fix: Route 컴포넌트 useParams 타입 명시하여 타입 오류 해결
osdoonhyun Jul 1, 2024
130672c
fix: 스타일 덮어쓰인 문제 해결
osdoonhyun Jul 1, 2024
a470954
style: 필요없는 import 삭제
osdoonhyun Jul 1, 2024
bac96ca
fix: style-system 경로수정
osdoonhyun Jul 1, 2024
dfa5849
chore: panda 경로설정
osdoonhyun Jul 1, 2024
7f5f9e8
chore: vercel json 추가
osdoonhyun Jul 2, 2024
1951d9d
style: 필요 없는 console.log 삭제
osdoonhyun Jul 2, 2024
83fc9c9
docs: README.md 업데이트
osdoonhyun Jul 2, 2024
3cc4368
docs: README.md 오타 수정 및 업데이트
osdoonhyun Jul 2, 2024
8c9b0d0
chore: near-payments 설치
osdoonhyun Jul 3, 2024
0815ce7
feat: payments 결제 기능 추가
osdoonhyun Jul 3, 2024
1a9ad13
docs: README 기능 구현사항 추가
osdoonhyun Jul 3, 2024
136ccab
rename: example stories 삭제
osdoonhyun Jul 4, 2024
0ce6617
feat: primitive, cart, product, order storybook 코드 작성
osdoonhyun Jul 4, 2024
6972277
chore: storybook chromatic 설치
osdoonhyun Jul 4, 2024
449c65a
rename: 필요없는 파일 삭제
osdoonhyun Jul 4, 2024
b7daf21
docs: storybook 링크 추가
osdoonhyun Jul 4, 2024
b0f9f84
chore: testing-library, jsdom, vitest 설치
osdoonhyun Jul 5, 2024
555c8cf
chore: vitest setup, 경로설정
osdoonhyun Jul 5, 2024
06ffd1a
test: cartStore 테스트 코드 추가
osdoonhyun Jul 5, 2024
18a3ac2
test: orderStore 테스트 코드 추가
osdoonhyun Jul 5, 2024
56217cd
test: alertDialogStore 함수명 개선 및 테스트 코드 추가
osdoonhyun Jul 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', 'plugin:storybook/recommended'],
ignorePatterns: ['dist', '.eslintrc.cjs'],
parser: '@typescript-eslint/parser',
plugins: ['react-refresh'],
rules: {
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
},
}
173 changes: 24 additions & 149 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,151 +1,26 @@
# Created by https://www.toptal.com/developers/gitignore/api/macos,windows,jetbrains+all
# Edit at https://www.toptal.com/developers/gitignore?templates=macos,windows,jetbrains+all

### JetBrains+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# AWS User-specific
.idea/**/aws.xml

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# SonarLint plugin
.idea/sonarlint/

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

### JetBrains+all Patch ###
# Ignore everything but code style settings and run configurations
# that are supposed to be shared within teams.

.idea/*

!.idea/codeStyles
!.idea/runConfigurations

### macOS ###
# General
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

### macOS Patch ###
# iCloud generated files
*.icloud

### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db

# Dump file
*.stackdump

# Folder config file
[Dd]esktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp

# Windows shortcuts
*.lnk
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# End of https://www.toptal.com/developers/gitignore/api/macos,windows,jetbrains+all
*storybook.log
20 changes: 20 additions & 0 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import type { StorybookConfig } from "@storybook/react-vite";

const config: StorybookConfig = {
stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
addons: [
"@storybook/addon-onboarding",
"@storybook/addon-links",
"@storybook/addon-essentials",
"@chromatic-com/storybook",
"@storybook/addon-interactions",
],
framework: {
name: "@storybook/react-vite",
options: {},
},
docs: {
autodocs: "tag",
},
};
export default config;
14 changes: 14 additions & 0 deletions .storybook/preview.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import type { Preview } from "@storybook/react";

const preview: Preview = {
parameters: {
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
},
};

export default preview;
Loading