Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
e1a2cfa
과제제출 커밋
chen4023 Nov 30, 2025
deef361
feat: Badge, Button, Card, Input 컴포넌트 제작 및 shadcn 세팅
chen4023 Dec 4, 2025
5ac4e93
feat: Add Label, Select, and Table components 작성
chen4023 Dec 4, 2025
9731572
feat: 사용 패키지 설치 및 추가 설정
chen4023 Dec 4, 2025
ce7ce59
refactor: cart, coupon, and product 비지니스 로직 구현 (순수함수)
chen4023 Dec 4, 2025
c9c097b
feat: 포매팅, 검증, 로컬 스토리지 관리를 위한 유틸리티 함수 추가
chen4023 Dec 6, 2025
03aa508
refactor: 장바구니 및 할인 관련 비즈니스 로직 분리
chen4023 Dec 6, 2025
4907f06
feat: 장바구니, 쿠폰, 상품 및 알림 관리 기능 hook 추가
chen4023 Dec 6, 2025
c539776
feat: Header 기반 레이아웃 분리
chen4023 Dec 6, 2025
9e5918d
feat: 관리자 대시보드 구성 요소 추가 (헤더, 탭, 상품 및 쿠폰 섹션)
chen4023 Dec 6, 2025
dbea54c
feat: 쿠폰 관리 기능 추가 (쿠폰 카드, 추가 카드, 폼 및 섹션 컴포넌트)
chen4023 Dec 6, 2025
9af1dbb
feat: 상품 관리 기능 추가 (상품 목록, 추가/수정 폼 및 테이블 컴포넌트)
chen4023 Dec 6, 2025
7476676
feat: 관리자 대시보드 구성 요소 베럴파일 추가
chen4023 Dec 6, 2025
88e2401
feat: CTA 버튼 및 searchbar 컴포넌트 구현
chen4023 Dec 6, 2025
af35ce6
feat: 장바구니 페이지 컴포넌트 구현 (상품 목록, 장바구니 섹션 및 결제 정보 포함)
chen4023 Dec 6, 2025
39db083
feat: 알림 목록 컴포넌트 추가 (알림 표시 및 제거 기능 포함)
chen4023 Dec 6, 2025
5a016d0
feat: 상품 카드 컴포넌트 추가 (상품 정보, 가격, 재고 상태 및 장바구니 버튼 포함)
chen4023 Dec 6, 2025
4481348
refactor: App 컴포넌트 구조 개선 및 도메인 훅 통합 (상품, 쿠폰, 장바구니 관리 기능 포함)
chen4023 Dec 6, 2025
65706d0
feat: 초기 데이터 상수 추가 (상품 목록 및 쿠폰 목록 포함)
chen4023 Dec 6, 2025
b7d4e1b
feat: 상품 인터페이스에 UI 관련 속성 추가 (설명 및 추천 여부 포함)
chen4023 Dec 6, 2025
a1a54aa
feat: Tailwind CSS 설정 및 유틸리티 함수 추가
chen4023 Dec 6, 2025
d08eb60
refactor : cart 페이지 경로 수정
chen4023 Dec 6, 2025
d8497aa
feat: add build scripts 추가 및 .gitignore 추가
chen4023 Dec 6, 2025
2e5391f
feat: viteconf 수정
chen4023 Dec 6, 2025
ae617d3
feat: add GitHub Actions workflow for deployment to GitHub Pages
chen4023 Dec 6, 2025
1c701c2
fix : Node.js, pnpm 버전 설정
chen4023 Dec 6, 2025
248e937
fix: ci 오류 수정
chen4023 Dec 6, 2025
dbd1777
fix: 배포 baseURL 관련 이슈 해결
chen4023 Dec 6, 2025
a91b725
feat: jotai 패키지 설치
chen4023 Dec 7, 2025
75c76d7
feat(advanced): utils 함수 추가
chen4023 Dec 7, 2025
4d3d12b
feat(advanced): add cart, coupon, discount, and product 계산함수 추가
chen4023 Dec 7, 2025
eeb63bb
feat(advanced): 도메인 별 hooks 파일 추가 (cart, coupon, notifications, product)
chen4023 Dec 7, 2025
80a4190
feat(advanced): common ui 추가
chen4023 Dec 7, 2025
e2b0f0f
feat(advanced): admin ui 컴포넌트 추가
chen4023 Dec 7, 2025
b18c009
feat(advanced): 쿠폰 관리 UI 컴포넌트 추가
chen4023 Dec 7, 2025
ab02ad8
feat(advanced): 상품 관리 UI 컴포넌트 추가 (ProductForm, ProductSection, Produc…
chen4023 Dec 7, 2025
fe7a5f8
feat(advanced): 장바구니 페이지 및 상품 카드 컴포넌트 추가
chen4023 Dec 7, 2025
b62d1bb
feat(advanced): feature ui 추가
chen4023 Dec 7, 2025
6f23048
feat(advanced): 도메인 header ui layout 추가
chen4023 Dec 7, 2025
d492764
feat(advanced): 초기 상품 및 쿠폰 데이터 상수 추가
chen4023 Dec 7, 2025
029d1b1
feat: 워크플로우 설정 관련 meta 옵션 추가
chen4023 Dec 7, 2025
86e55a6
feat(advanced): 리팩토링 및 스타일 추가
chen4023 Dec 7, 2025
f5fd140
feat(advanced): 새로운 타입 정의 추가
chen4023 Dec 7, 2025
ff2acc8
feat(advanced): Jotai Atom 상태 관리 추가
chen4023 Dec 7, 2025
057e179
test(advanced): Jotai Provider로 감싸는 래퍼 추가 및 테스트 리팩토링
chen4023 Dec 7, 2025
5452f9f
feat(advanced): Store index 파일 추가 및 Atom 내보내기 구현
chen4023 Dec 7, 2025
0e3933c
refactor(advanced): 장바구니 전역변수 추가
chen4023 Dec 7, 2025
2d6954d
refactor(advanced): NotificationList 컴포넌트 리팩토링 및 useNotifications 훅 통합
chen4023 Dec 7, 2025
cce58e5
refactor(advanced): AdminPage 컴포넌트에서 useProducts 및 useCoupons 훅 통합
chen4023 Dec 7, 2025
ceadf9a
refactor(advanced): CartPage 컴포넌트에서 useProducts 및 useCoupons 훅 통합
chen4023 Dec 7, 2025
d93a024
refactor(advanced): App 컴포넌트 불필요한 props 제거
chen4023 Dec 7, 2025
a3bbbdd
feat(advanced): 가격, 할인율 및 날짜 포맷팅 함수 추가
chen4023 Dec 7, 2025
05521f4
refactor(advanced): 정리 및 불필요한 주석 제거로 할인 모델 개선
chen4023 Dec 7, 2025
5ddb113
refactor(advanced): 상품 모델에 검색 및 필터링 기능 추가
chen4023 Dec 7, 2025
0d6260b
refactor(advanced): 장바구니 모델에서 불필요한 주석 제거 및 검색 필터함수 제거
chen4023 Dec 7, 2025
f8d97da
refactor(advanced): 검색 필터함수 product 적용
chen4023 Dec 7, 2025
06b1c5e
refactor(advanced): 불필요한 주석 제거 및 코드 정리
chen4023 Dec 7, 2025
911b41a
refactor(advanced): useCart 훅 및 cartAtom 개선
chen4023 Dec 7, 2025
9046347
refactor(advanced): useNotifications 훅 및 notificationAtom 정리 - notifi…
chen4023 Dec 7, 2025
b49c2bb
refactor(advanced): useCoupons 훅 및 couponAtom 정리
chen4023 Dec 7, 2025
e6be0fc
refactor(advanced): useProducts 훅 및 productAtom 정리
chen4023 Dec 7, 2025
a95ce79
refactor(advanced): productAtom 및 couponAtom 정리
chen4023 Dec 7, 2025
f1e84eb
feat: deploy both basic and advanced to gh-pages
chen4023 Dec 7, 2025
eef6b84
fix: remove root index page
chen4023 Dec 7, 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
74 changes: 74 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Deploy to GitHub Pages

on:
push:
branches: [main]
workflow_dispatch:

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

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

jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: latest

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

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

# Basic 빌드
- name: Build Basic
run: pnpm build
env:
BUILD_TARGET: basic
BASE_URL: /${{ github.event.repository.name }}/basic/

- name: Move Basic build
run: |
mkdir -p deploy/basic
mv dist/* deploy/basic/
if [ -f "deploy/basic/index.basic.html" ]; then
mv deploy/basic/index.basic.html deploy/basic/index.html
fi

# Advanced 빌드
- name: Build Advanced
run: pnpm build
env:
BUILD_TARGET: advanced
BASE_URL: /${{ github.event.repository.name }}/advanced/

- name: Move Advanced build
run: |
mkdir -p deploy/advanced
mv dist/* deploy/advanced/
if [ -f "deploy/advanced/index.advanced.html" ]; then
mv deploy/advanced/index.advanced.html deploy/advanced/index.html
fi

# gh-pages 브랜치에 배포
- name: Deploy to gh-pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./deploy
publish_branch: gh-pages
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@ dist-ssr
*.njsproj
*.sln
*.sw?
.env
22 changes: 22 additions & 0 deletions components.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": false,
"tsx": true,
"tailwind": {
"config": "",
"css": "src/basic/index.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"iconLibrary": "lucide",
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"registries": {}
}
3 changes: 2 additions & 1 deletion index.advanced.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<!doctype html>
<html lang="ko">
<html lang="ko" data-version="advanced">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="build-target" content="advanced"/>
<title>장바구니로 학습하는 디자인패턴</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
Expand Down
3 changes: 2 additions & 1 deletion index.basic.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<!doctype html>
<html lang="ko">
<html lang="ko" data-version="basic">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="build-target" content="basic"/>
<title>장바구니로 학습하는 디자인패턴</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
Expand Down
17 changes: 16 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,30 @@
"test:advanced": "vitest src/advanced",
"test:ui": "vitest --ui",
"build": "tsc -b && vite build",
"build:basic": "BUILD_TARGET=basic tsc -b && BUILD_TARGET=basic vite build",
"build:advanced": "BUILD_TARGET=advanced tsc -b && BUILD_TARGET=advanced vite build",
"build:origin": "BUILD_TARGET=origin tsc -b && BUILD_TARGET=origin vite build",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0"
},
"dependencies": {
"@radix-ui/react-label": "^2.1.8",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-slot": "^1.2.4",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"jotai": "^2.15.2",
"lucide-react": "^0.555.0",
"react": "^19.1.1",
"react-dom": "^19.1.1"
"react-dom": "^19.1.1",
"tailwind-merge": "^3.4.0",
"zod": "^4.1.13"
},
"devDependencies": {
"@tailwindcss/vite": "^4.1.17",
"@testing-library/jest-dom": "^6.6.4",
"@testing-library/react": "^16.3.0",
"@testing-library/user-event": "^14.6.1",
"@types/node": "^24.10.1",
"@types/react": "^19.1.9",
"@types/react-dom": "^19.1.7",
"@typescript-eslint/eslint-plugin": "^8.38.0",
Expand All @@ -33,6 +47,7 @@
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
"jsdom": "^26.1.0",
"tailwindcss": "^4.1.17",
"typescript": "^5.9.2",
"vite": "^7.0.6",
"vitest": "^3.2.4"
Expand Down
Loading