Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
9f044d3
feat: 기본 코드 추가
JunilHwang Sep 26, 2025
d8a9676
과제 제출을 위한 빈 커밋 날리기
seunghoonKang Nov 9, 2025
f5c4eea
feat - 기본 형태 구현
seunghoonKang Nov 10, 2025
925f58b
feat - HTML 적용
seunghoonKang Nov 10, 2025
c407fa7
fix - lint 오류로 인한 prettier trailingComma 추가
seunghoonKang Nov 10, 2025
f9ee80a
feat - 카테고리 필터 적용
seunghoonKang Nov 10, 2025
7f7367a
feat - 카테고리 breadcrumb 클릭 시 행동 적용
seunghoonKang Nov 11, 2025
17d3d26
feat - filter 옵저버
seunghoonKang Nov 12, 2025
1ad98b1
feat - filter를 통한 이벤트 처리
seunghoonKang Nov 12, 2025
e207911
feat - 이벤트 정리, 정렬 이벤트 설정
seunghoonKang Nov 12, 2025
a3c2c76
feat - 장바구니 클릭 했을 때 동작 추가, 로컬 스토리지 기능 추가
seunghoonKang Nov 12, 2025
2c4b6a2
fix - 상품 정보 빠진 부분, alt 오류 수정
seunghoonKang Nov 13, 2025
08da962
feat - 장바구니 체크박스 동작 설정
seunghoonKang Nov 13, 2025
d7fbdad
feat - storage 수정
seunghoonKang Nov 13, 2025
57d80fd
fix - 아이템 빠진 부분 추가
seunghoonKang Nov 13, 2025
3b3cc49
Create deploy.yml
seunghoonKang Nov 13, 2025
18bf3c6
feat - 배포 설정
seunghoonKang Nov 13, 2025
f1a23d5
Merge remote-tracking branch 'origin/main'
seunghoonKang Nov 13, 2025
6d3c0dd
fix - base경로 수정
seunghoonKang Nov 13, 2025
1fb441e
Update deploy.yml
seunghoonKang Nov 13, 2025
9a12cad
Update deploy.yml
seunghoonKang Nov 13, 2025
ab9a740
fix - msw 경로 수정
seunghoonKang Nov 13, 2025
d1c11f8
Merge remote-tracking branch 'origin/main'
seunghoonKang Nov 13, 2025
690d003
Add MSW Service Worker script
seunghoonKang Nov 13, 2025
98409a0
Fix MSW Service Worker scope
seunghoonKang Nov 13, 2025
bd28f0b
msw error fix
seunghoonKang Nov 13, 2025
11f2abc
배포 오류 수정중
seunghoonKang Nov 13, 2025
75ccb5d
fix - vite config, main
seunghoonKang Nov 14, 2025
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
8 changes: 8 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

문제 상황

상품 정렬 기능 항목에 <<<<<<< HEAD/=======/>>>>>>> 충돌 마커가 그대로 남아 있어서 GitHub에서 자동으로 PR 템플릿을 렌더링할 때 두 가지 중복된 체크리스트 항목이 동시에 노출됩니다. 이 상태로는 어떤 조건으로 체크해야 하는지 명확하지 않습니다.

현재 코드의 한계

  • [한계점 1] PR 템플릿을 복사해서 쓰는 개발자는 HEAD 영역과 caecb93 영역을 비교해서 어떤 체크박스를 써야 하는지 매번 판단해야 합니다.
  • [한계점 2] 템플릿을 파싱해서 자동화를 돌리는 워크플로우(예: 특정 체크리스트를 만족해야 병합 가능)에서 충돌 마커가 있는 문자열을 그대로 읽어버리면 오류를 발생시킬 수 있습니다.
  • [한계점 3] 비교적 잦은 ‘정렬 기준 변경’ 요구사항이 생길 때마다 충돌 마커를 만지는 과정이 반복되면 유지보수가 어려워집니다.

근본 원인

PR 템플릿을 수정하면서 충돌을 완전히 해소하지 않고 커밋해서 충돌 마커가 리포지토리에 남아 있었습니다.

개선 구조

  • [개선 사항 1] 충돌 마커를 제거하고 하나의 체크리스트(예: 가격순/인기순)만 남겨주세요.
  • [개선 사항 2] 정렬 옵션이 변경될 때는 템플릿을 다시 수정해서 새로운 옵션을 단일한 리스트로 반영합니다.
  • [개선 사항 3] GitHub 템플릿은 머지되기 전에 git diff --check로 확인해서 충돌 마커가 없는지를 검증하는 훅을 둘 수 있습니다.
-<<<<<<< HEAD
- - [ ] 상품을 가격순/이름순으로 오름차순/내림차순 정렬을 할 수 있다.
-=======
-- [ ] 상품을 가격순/인기순으로 오름차순/내림차순 정렬을 할 수 있다.
->>>>>>> caecb93 (feat: 기본 코드 추가)
+- [ ] 상품을 가격순/인기순으로 오름차순/내림차순 정렬을 할 수 있다.

추가 요구사항: 앞으로 인기순 외에 리뷰순 같은 새 정렬을 도입하면 템플릿을 다시 열어 다수의 항목이 한 번에 보일 것이고, 현재처럼 충돌 마커가 섞여 있으면 합의된 상태로 유지하기 어렵습니다. 이번 기회에 템플릿을 정리해 두면 나중에 커스텀 옵션이 들어와도 깔끔하게 유지할 수 있습니다.

**상품 정렬 기능**

<<<<<<< HEAD
- [ ] 상품을 가격순/이름순으로 오름차순/내림차순 정렬을 할 수 있다.
=======
- [ ] 상품을 가격순/인기순으로 오름차순/내림차순 정렬을 할 수 있다.
>>>>>>> caecb93 (feat: 기본 코드 추가)
- [ ] 드롭다운을 통해 정렬 기준을 선택할 수 있다
- [ ] 정렬 변경 시 즉시 목록에 반영된다

Expand All @@ -52,6 +56,10 @@
**상품 검색**

- [ ] 상품명 기반 검색을 위한 텍스트 입력 필드가 있다
<<<<<<< HEAD
=======
- [ ] 검색 버튼 클릭으로 검색이 수행된다
>>>>>>> caecb93 (feat: 기본 코드 추가)
- [ ] Enter 키로 검색이 수행된다
- [ ] 검색어와 일치하는 상품들만 목록에 표시된다

Expand Down
66 changes: 66 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Deploy to GitHub Pages

on:
push: # push trigger
branches:
- main
- feature-* # Feature 브랜치도 배포

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: true

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install pnpm
uses: pnpm/action-setup@v2

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "pnpm"

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build
run: pnpm run build

- name: Setup Pages
uses: actions/configure-pages@v4

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "./dist"

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

- name: Output deployment URL
run: |
REPO_NAME=$(echo ${{ github.repository }} | cut -d'/' -f2)
OWNER=$(echo ${{ github.repository }} | cut -d'/' -f1)

echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🚀 GitHub Pages Deployment Complete"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✅ Status: Success"
echo "📄 Live URL: https://${OWNER}.github.io/${REPO_NAME}/"
echo "📌 Repository: ${{ github.repository }}"
echo "📝 Branch: ${{ github.ref_name }}"
echo "🔗 Commit: ${{ github.sha }}"
echo "👤 Author: ${{ github.actor }}"
echo "⏰ Time: $(date)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
3 changes: 2 additions & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@
"tabWidth": 2,
"semi": true,
"singleQuote": false,
"printWidth": 120
"printWidth": 120,
"trailingComma": "all"
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"private": true,
"version": "0.0.0",
"type": "module",
"packageManager": "[email protected]",
"scripts": {
"dev": "vite",
"dev:hash": "vite --open ./index.hash.html",
Expand Down Expand Up @@ -40,7 +41,6 @@
"jsdom": "^25.0.1",
"lint-staged": "^15.2.11",
"msw": "^2.10.2",
"prettier": "^3.4.2",
"vite": "npm:rolldown-vite@latest",
"vitest": "latest"
},
Expand Down
3 changes: 0 additions & 3 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 3 additions & 11 deletions public/mockServiceWorker.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,7 @@ addEventListener("fetch", function (event) {

// Opening the DevTools triggers the "only-if-cached" request
// that cannot be handled by the worker. Bypass such requests.
if (
event.request.cache === "only-if-cached" &&
event.request.mode !== "same-origin"
) {
if (event.request.cache === "only-if-cached" && event.request.mode !== "same-origin") {
return;
}

Expand Down Expand Up @@ -219,9 +216,7 @@ async function getResponse(event, client, requestId) {
const acceptHeader = headers.get("accept");
if (acceptHeader) {
const values = acceptHeader.split(",").map((value) => value.trim());
const filteredValues = values.filter(
(value) => value !== "msw/passthrough",
);
const filteredValues = values.filter((value) => value !== "msw/passthrough");

if (filteredValues.length > 0) {
headers.set("accept", filteredValues.join(", "));
Expand Down Expand Up @@ -291,10 +286,7 @@ function sendToClient(client, message, transferrables = []) {
resolve(event.data);
};

client.postMessage(message, [
channel.port2,
...transferrables.filter(Boolean),
]);
client.postMessage(message, [channel.port2, ...transferrables.filter(Boolean)]);
});
}

Expand Down
4 changes: 4 additions & 0 deletions requirement.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

문제 상황

요구사항 문서에도 <<<<<<< HEAD 등 충돌 마커가 남아 있어서 상품 정렬 기능 요구사항이 둘 다 존재하는 것처럼 보입니다. 문서를 보는 사람마다 정렬 기준을 다르게 해석할 수 있습니다.

현재 코드의 한계

  • [한계점 1] 문서를 참고해서 구현하는 사람들이 어떤 정렬을 우선으로 해야 할지 헷갈립니다.
  • [한계점 2] 충돌 마커가 포함된 상태로 배포하면 린트/검수팀이 "문서가 불안정하다"고 판단할 수 있습니다.
  • [한계점 3] 새로운 정렬 옵션을 추가하려면 기존 내용을 정리해야 하는데, 충돌 상태면 어느 줄을 편집해야 하는지 판단하기 어렵습니다.

근본 원인

마찬가지로 문서 편집 도중 merge conflict를 해결하지 않고 커밋해서 충돌 마커가 남아 있습니다.

개선 구조

  • [개선 사항 1] 중복된 정렬 항목을 하나로 정리하고 충돌 마커를 제거합니다.
  • [개선 사항 2] 가격순/인기순을 기본으로 유지하면서, 이후 리뷰순 등 다른 옵션을 추가할 때에는 별도의 항목을 추가합니다.
  • [개선 사항 3] 요구사항 문서는 CI에서 문법 검사(머지 마커가 없는지)하도록 체크하는 것이 좋습니다.
-<<<<<<< HEAD
- - 상품을 가격순/이름순으로 오름차순/내림차순 정렬을 할 수 있다.
-=======
-- 상품을 가격순/인기순으로 오름차순/내림차순 정렬을 할 수 있다.
->>>>>>> caecb93 (feat: 기본 코드 추가)
+- 상품을 가격순/인기순으로 오름차순/내림차순 정렬을 할 수 있다.

추가 요구사항: 앞으로 리뷰 순, 신상품 순 같이 정렬 기준이 늘어날 가능성이 있는데, 충돌 마커가 남아 있으면 누가 어떤 기능을 구현했는지 알기 어렵습니다. 각 항목을 명확하게 구분해두어야 확장성도 확보됩니다.

### 상품 정렬 기능

<<<<<<< HEAD
- 상품을 가격순/이름순으로 오름차순/내림차순 정렬을 할 수 있다.
=======
- 상품을 가격순/인기순으로 오름차순/내림차순 정렬을 할 수 있다.
>>>>>>> caecb93 (feat: 기본 코드 추가)
- 드롭다운을 통해 정렬 기준을 선택할 수 있다
- 정렬 변경 시 즉시 목록에 반영된다

Expand Down
Loading
Loading