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

[함헌규] sprint5 #83

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
a917e25
docs: 미션 요구사항 작성
heonq Oct 21, 2024
f0a154a
chore: react 프로젝트 세팅
heonq Oct 21, 2024
4a2a1b3
chore: gitignore 내용 추가
heonq Oct 22, 2024
c1a02c7
chore: styled-components 설치
heonq Oct 22, 2024
0d01557
style: 전체 스타일 적용
heonq Oct 22, 2024
1d8101f
fix: styled-components import 수정
heonq Oct 22, 2024
6b50f7d
feat: Nav,Footer 컴포넌트 구현
heonq Oct 22, 2024
4604b67
feat: api 기능 구현
heonq Oct 22, 2024
632570a
style: 글로벌 스타일 수정
heonq Oct 22, 2024
4063adc
feat: Footer 컴포넌트 변경
heonq Oct 22, 2024
bdc7bcf
chore: 스토리북 설치 및 폰트 설정
heonq Oct 22, 2024
05265b4
style: 폰트 설정 수정
heonq Oct 22, 2024
954eb76
style: index.html 수정
heonq Oct 22, 2024
5473759
feat: 문자열에 형식을 지정하는 formatter 객체 구현
heonq Oct 22, 2024
b8a256f
feat: BestProduct 컴포넌트 구현
heonq Oct 22, 2024
95826ce
style: Nav 컴포넌트 스타일 변경
heonq Oct 22, 2024
321bd79
feat: api 함수 수정
heonq Oct 22, 2024
b1737e3
feat: Product 컴포넌트 수정
heonq Oct 23, 2024
91e015b
chore: storybook onboarding addon 제거
heonq Oct 23, 2024
35ccd7f
style: 전역 스타일 수정
heonq Oct 24, 2024
2eb67a5
feat: Select 컴포넌트 구현
heonq Oct 24, 2024
63f250f
feat: 공통 컴포넌트 구현
heonq Oct 24, 2024
d16a4d0
style: Product컴포넌트 스토리 파일명 변경
heonq Oct 24, 2024
0dac7bc
feat: 푸터 컴포넌트 구현
heonq Oct 24, 2024
574dca3
feat: Nav 컴포넌트 구현
heonq Oct 24, 2024
0333fa4
feat: recoil 설정
heonq Oct 26, 2024
259a04f
style: 반응형 디자인 적용
heonq Oct 26, 2024
9ab1aa0
chore: 이미지 파일 추가
heonq Oct 26, 2024
7ccd963
chore: 상품 정렬 기준 정보를 담는 객체 추가
heonq Oct 26, 2024
b4de316
feat: 베스트 상품,상품 검색 결과 컴포넌트 구현
heonq Oct 26, 2024
fd343e3
feat: Products페이지 수정
heonq Oct 26, 2024
de62985
PageIndex 컴포넌트 수정
heonq Oct 26, 2024
5bf8b12
docs: 요구사항 문서 작성
heonq Oct 26, 2024
65579f0
feat: Select 컴포넌트 스토리 수정
heonq Oct 26, 2024
56dab0b
add: PageIndex 컴포넌트에 대한 스토리 작성
heonq Oct 26, 2024
377a602
style: Nav 컴포넌트에 반응형 로고이미지 적용
Oct 27, 2024
9d89b58
chore: 모바일 사이즈 로고 이미지 추가
Oct 27, 2024
cdea301
style: footer 컴포넌트 반응형 디자인 적용
Oct 27, 2024
4c0c7be
style: footer 컴포넌트 반응형 디자인 적용
Oct 27, 2024
7ad7946
chore: 이미지 경로 수정
Oct 27, 2024
12f0c7a
fix: 이미지 경로 오류 수정
Oct 27, 2024
0532140
chore: reocil 제거 후 jotai 설치
heonq Oct 29, 2024
9836b51
feat: 반응형 디자인을 적용할 때 스크린 사이즈를 감지하는 기능 수정
heonq Oct 29, 2024
ecd10c5
fix: 반응형 레이아웃 적용 코드 수정
heonq Oct 29, 2024
57fa85f
feat: 화면크기를 체크하는 useScreenWidth 훅 구현
heonq Oct 30, 2024
1585ffe
feat: 상품을 불러오는 useProducts 훅 구현
heonq Oct 30, 2024
ee341ad
feat: 상품 목록 상단 바 컴포넌트 수정
heonq Oct 30, 2024
df6a490
refactor: Products 페이지 리팩토링
heonq Oct 30, 2024
4ef4cc3
refactor: 버튼 컴포넌트 수정
heonq Oct 30, 2024
54d4f3a
refactor: 공통 버튼 스타일을 theme에 설정하고 Button 컴포넌트 제거
heonq Oct 30, 2024
46601fa
refactor: 숫자 포맷팅 메서드 수정
heonq Oct 30, 2024
7ce2309
refactor: media query가 변경될 때 마다 상품을 새로 불러오는 기능 구현
heonq Oct 30, 2024
22aab88
refactor: useProducts 훅 수정
heonq Oct 30, 2024
3c8a903
refactor: 상품 리프레쉬 관련 의존성 배열 추가
heonq Oct 30, 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
59 changes: 59 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# 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
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?



### macOS ###
# General
.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
*storybook.log
15 changes: 15 additions & 0 deletions .storybook/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/** @type { import('@storybook/react-vite').StorybookConfig } */
const config = {
stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
addons: [
"@storybook/addon-links",
"@storybook/addon-essentials",
"@chromatic-com/storybook",
"@storybook/addon-interactions",
],
framework: {
name: "@storybook/react-vite",
options: {},
},
};
export default config;
27 changes: 27 additions & 0 deletions .storybook/preview.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { ThemeProvider } from "styled-components";
import { defaultTheme } from "../src/theme";
import { GlobalStyle } from "../src/Root";

/** @type { import('@storybook/react').Preview } */
const preview = {
parameters: {
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
},
decorators: [
(Story) => {
return (
<ThemeProvider theme={defaultTheme}>
<GlobalStyle />
<Story />
</ThemeProvider>
);
},
],
};

export default preview;
40 changes: 40 additions & 0 deletions docs/sprint5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# 요구사항

## 기본 요구사항

### 공통

- [x] Github에 스프린트 미션 PR을 만들어 주세요.
- [x] React를 사용해 진행합니다.

### 중고마켓 페이지

- [x] PC, Tablet, Mobile 디자인에 해당하는 중고마켓 페이지를 만들어 주세요.
- [x] 중고마켓 페이지 url path는 별도로 설정하지 않고, ‘/’에 보이도록 합니다.
- [x] 상품 데이터는 https://panda-market-api.vercel.app/docs/에 명세된 GET 메소드 “/products” 를 사용해주세요.
- [x] 상단 네비게이션 바, 푸터는 랜딩 페이지와 동일한 스타일과 규칙으로 만들어주세요.
- [x] 상품 데이터는 https://panda-market-api.vercel.app/docs/에 명세된 GET 메소드 “/products” 를 활용해주세요.
- [x] 상품 목록 페이지네이션 기능을 구현합니다.
- [x] 드롭 다운으로 “최신 순” 또는 “좋아요 순”을 선택해서 정렬을 구현하세요.
- [x] 상품 목록 검색 기능을 구현합니다.
- [x] 베스트 상품 데이터는 https://panda-market-api.vercel.app/docs/에 명세된 GET 메소드 “/products”의 정렬 기준 favorite을 사용해주세요.

## 심화 요구사항

### 공통

- [ ] 커스텀 hook을 만들어 필요한 곳에 활용해 보세요.

### 중고마켓 페이지

- [x] 중고 마켓의 카드 컴포넌트 반응형 기준은 다음과 같습니다.
- 베스트 상품
- Desktop : 4열
- Tablet : 2열
- Mobile : 1열
- 전체 상품
- Desktop : 5열
- Tablet : 3열
- Mobile : 2열
- 반응형에 따른 페이지 네이션 기능을 구현합니다.
- 반응형으로 보여지는 물품들의 개수를 다르게 설정할때 서버에 보내는 pageSize값을 적절하게 설정합니다.
38 changes: 38 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import js from '@eslint/js'
import globals from 'globals'
import react from 'eslint-plugin-react'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'

export default [
{ ignores: ['dist'] },
{
files: ['**/*.{js,jsx}'],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
parserOptions: {
ecmaVersion: 'latest',
ecmaFeatures: { jsx: true },
sourceType: 'module',
},
},
settings: { react: { version: '18.3' } },
plugins: {
react,
'react-hooks': reactHooks,
'react-refresh': reactRefresh,
},
rules: {
...js.configs.recommended.rules,
...react.configs.recommended.rules,
...react.configs['jsx-runtime'].rules,
...reactHooks.configs.recommended.rules,
'react/jsx-no-target-blank': 'off',
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
},
},
]
13 changes: 13 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="kor">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/public/icons/PandaIcon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Panda Market</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>
Loading