콘텐츠로 이동

제품 카탈로그 사이트

Cursor AI를 활용해 제품을 카테고리별로 보여주는 전문적인 카탈로그 사이트를 만들어봅시다.

전자제품 카탈로그
┌─────────────────────────────────┐
│ [전체] [스마트폰] [노트북] [태블릿] │
└─────────────────────────────────┘
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Galaxy │ │ iPhone │ │ Pixel │
│ S24 │ │ 15 Pro │ │ 8 Pro │
│ 1,200,000│ │ 1,550,000│ │ 1,100,000│
└──────────┘ └──────────┘ └──────────┘

File > Open Folder → 새 폴더 “product-catalog” 생성

제품 카탈로그 사이트 만들어줘.
프로젝트 구조:
- index.html
- style.css
- script.js
- products.json (제품 데이터)
- categories.json (카테고리 데이터)
기본 뼈대만 만들어줘.
categories.json 만들어줘.
카테고리 정보:
- id (고유번호)
- 이름
- 설명
- 아이콘 (emoji 또는 Font Awesome)
카테고리 3개:
1. 스마트폰
2. 노트북
3. 태블릿
products.json 만들어줘.
각 제품 정보:
- id
- 제품명
- 카테고리 ID
- 브랜드
- 가격
- 할인가 (있으면)
- 설명
- 스펙 (배열: 화면크기, 메모리, 저장공간 등)
- 썸네일 이미지 URL (플레이스홀더)
- 색상 옵션 (배열)
- 재고 상태 (판매중, 품절, 출시예정)
- 평점
- 리뷰 수
각 카테고리별로 3-4개 제품 만들어줘.
총 10개 제품.
index.html 만들어줘.
구조:
1. 헤더
- 사이트 로고/제목
- 검색바
- 장바구니 아이콘 (개수 표시)
2. 카테고리 필터 바
- "전체" 버튼
- categories.json에서 가져온 카테고리 버튼들
- 선택된 카테고리 강조
3. 정렬 및 필터 옵션
- 정렬: 가격낮은순, 가격높은순, 평점순, 최신순
- 필터: 브랜드별, 가격대별, 재고있음만
4. 제품 그리드
- 카드 레이아웃
- 각 카드:
- 썸네일
- 브랜드 + 제품명
- 평점 + 리뷰수
- 원가 (할인시 취소선)
- 할인가 (있으면)
- 할인율 뱃지
- 재고 상태
- "장바구니 담기" 버튼
- "상세보기" 버튼
5. 제품 상세 모달
- 큰 이미지
- 모든 제품 정보
- 색상 선택
- 수량 선택
- "장바구니 담기"
- "바로 구매"
6. 장바구니 사이드바
- 담긴 제품 목록
- 각 항목: 썸네일, 이름, 가격, 수량 조절, 삭제
- 총 금액
- "주문하기" 버튼
디자인:
- 전문적인 쇼핑몰 느낌
- 깔끔하고 현대적
- 반응형 (모바일 1열, 태블릿 2열, PC 4열)
style.css 만들어줘.
디자인 요구사항:
- 메인 색상: #2c3e50 (어두운 블루그레이)
- 강조 색상: #e74c3c (빨강)
- 배경: #f5f5f5 (밝은 회색)
- 카드 배경: 흰색
헤더:
- 고정 상단
- 그림자
- 높이 60px
- 로고 왼쪽, 검색바 중앙, 장바구니 오른쪽
카테고리 바:
- 헤더 바로 아래 고정
- 버튼들 가로 스크롤
- 선택된 버튼: 파란 배경, 흰 글씨
제품 카드:
- 흰 배경
- 둥근 모서리
- 호버 시 살짝 올라오고 그림자 진해짐
- 썸네일 정사각형, 16:9 비율
- 가격 크고 굵게
- 할인가는 빨간색
모달:
- 반투명 배경
- 중앙 배치
- 닫기 버튼
- 애니메이션 (페이드인)
장바구니:
- 우측 슬라이드인
- 고정 너비 400px
- 스크롤 가능
반응형:
- 모바일 (<768px): 제품 1열, 장바구니 전체 너비
- 태블릿 (768-1024px): 제품 2열
- PC (>1024px): 제품 4열
애니메이션:
- 부드러운 전환
- 호버 효과
- 페이드인 효과
script.js 만들어줘.
기능 목록:
1. 데이터 로딩
- categories.json 읽기
- products.json 읽기
- 페이지 로드 시 자동 실행
2. 카테고리 버튼 생성
- 동적으로 버튼 생성
- "전체" 버튼 기본 선택
- 클릭 시 필터링
3. 제품 카드 표시
- 그리드로 배치
- 할인율 계산 및 표시
- 재고 상태별 다른 스타일
- 평점 별 아이콘으로 표시
4. 검색 기능
- 제품명, 브랜드, 설명에서 검색
- 실시간 검색 (디바운싱 300ms)
- 검색 결과 개수 표시
5. 정렬 기능
- 가격 오름차순/내림차순
- 평점순
- 최신순
- 드롭다운으로 선택
6. 필터 기능
- 카테고리별
- 브랜드별 (체크박스)
- 가격대별 (슬라이더)
- 재고 있음만 (토글)
7. 제품 상세 모달
- 카드 클릭 시 열기
- ESC 키로 닫기
- 바깥 클릭으로 닫기
- 색상 선택 기능
- 수량 증가/감소
8. 장바구니 기능
- 제품 추가 (중복시 수량 증가)
- 수량 변경
- 제품 삭제
- 총 금액 자동 계산
- 로컬 스토리지에 저장
- 페이지 새로고침해도 유지
- 장바구니 아이콘에 개수 표시
9. 장바구니 사이드바
- 장바구니 아이콘 클릭 시 열기
- 닫기 버튼
- 빈 장바구니 메시지
코드 구조:
- 객체 지향 (CartManager 클래스)
- 함수 분리
- async/await 사용
- 에러 처리
- 주석 추가

Cursor에게 요청:

가격 범위 필터 추가해줘.
요구사항:
- 범위 슬라이더 (Min-Max)
- 현재 선택된 가격 범위 표시
- 실시간 필터링
- "초기화" 버튼
슬라이더 라이브러리 사용하지 말고
HTML input type="range" 2개로 구현해줘.

Cursor에게 요청:

브랜드별 필터 추가해줘.
기능:
- products.json에서 모든 브랜드 추출
- 체크박스 리스트로 표시
- 여러 브랜드 동시 선택 가능
- 선택된 브랜드만 표시
- "전체 선택/해제" 버튼

Cursor에게 요청:

위시리스트 기능 추가해줘.
기능:
- 제품 카드에 하트 아이콘
- 클릭하면 위시리스트 추가/제거
- 하트 색상 변경 (빈하트 ♡ → 꽉찬하트 ♥)
- 로컬 스토리지에 저장
- 헤더에 위시리스트 아이콘 + 개수
- 위시리스트 페이지 또는 모달
제품 비교 기능 추가해줘.
기능:
- 제품 카드에 "비교하기" 체크박스
- 최대 4개까지 선택 가능
- 하단 고정 바에 선택된 제품 표시
- "비교하기" 버튼 클릭 시 비교 페이지/모달
- 스펙을 표 형태로 나란히 비교
- 가격, 평점 비교 하이라이트
제품 목록에 페이지네이션 추가해줘.
요구사항:
- 한 페이지에 12개 제품
- 페이지 번호 버튼
- 이전/다음 버튼
- 첫페이지/마지막페이지 버튼
- 현재 페이지 강조
- URL에 페이지 번호 반영 (?page=2)
- 페이지 변경 시 맨 위로 스크롤
로딩 상태와 애니메이션 개선해줘.
로딩:
- 스켈레톤 UI (카드 형태)
- 데이터 로드 중 표시
- 스피너 애니메이션
애니메이션:
- 제품 카드 순차적 페이드인
- 필터 변경 시 부드러운 전환
- 장바구니 추가 시 fly-to-cart 효과
- 모달 열기/닫기 애니메이션
- 호버 시 이미지 줌인
Intersection Observer 사용해서
스크롤 시 카드 나타나는 효과 추가해줘.
모바일 경험 개선해줘.
모바일 (<768px):
- 헤더 간소화 (햄버거 메뉴)
- 검색바 토글 버튼
- 카테고리 가로 스크롤
- 필터를 하단 시트로 변경
- 제품 카드 1열 (목록형으로 변경 옵션)
- 장바구니 전체 화면
- 터치 제스처 (스와이프로 장바구니 닫기)
태블릿 (768-1024px):
- 제품 카드 2-3열
- 사이드바 필터
- 적절한 간격
큰 화면 (>1400px):
- 최대 너비 제한
- 제품 카드 5열
  • 카테고리 필터가 작동하는가?
  • 검색이 실시간으로 작동하는가?
  • 정렬이 제대로 되는가?
  • 브랜드/가격 필터가 작동하는가?
  • 장바구니 추가/삭제/수정이 되는가?
  • 로컬 스토리지에 장바구니가 저장되는가?
  • 모달이 잘 열리고 닫히는가?
  • 반응형이 모든 기기에서 잘 작동하는가?
  • 페이지네이션이 작동하는가?
Terminal window
git init
git add .
git commit -m "제품 카탈로그 사이트 초기 버전"
Terminal window
git branch -M main
git remote add origin https://github.com/사용자명/product-catalog.git
git push -u origin main
  • Cloudflare Pages 대시보드 접속
  • “Connect to Git” 클릭
  • 저장소 선택
  • “Save and Deploy” 클릭
  • 배포 완료 후 URL 확인

새 제품을 추가하려면 products.json만 수정:

products.json에 새 제품 추가해줘.
카테고리: 스마트폰
브랜드: Samsung
제품명: Galaxy S24 Ultra
가격: 1,698,400원
스펙: 6.8인치, 12GB RAM, 256GB, Snapdragon 8 Gen 3

수정 후 Git 푸시하면 자동 배포!

  1. 제품 리뷰 시스템
각 제품에 리뷰 섹션 추가해줘.
- 별점 + 한줄평
- reviews.json 파일로 관리
- 평균 평점 자동 계산
- 리뷰 작성 폼
  1. 추천 제품
"이 제품과 함께 본 제품" 섹션 추가해줘.
- 같은 카테고리 제품 랜덤 3개
- 가격대가 비슷한 제품
- 상세 페이지 하단에 표시
  1. 할인 타이머
할인 종료까지 남은 시간 표시해줘.
- 카운트다운 타이머
- products.json에 할인종료일 추가
- 시간 단위로 업데이트
  1. 최근 본 제품
최근 본 제품 기록 기능 추가해줘.
- 로컬 스토리지에 저장
- 최대 10개
- 하단 슬라이더로 표시
  1. 다크 모드
다크 모드 토글 추가해줘.
- 헤더에 토글 버튼
- 로컬 스토리지에 설정 저장
- 부드러운 전환 애니메이션
  1. 공유 기능
제품 공유 버튼 추가해줘.
- 카카오톡, 페이스북, 트위터
- URL 복사
- Web Share API 사용
  1. 빠른 보기
카드에서 바로 미리보기 기능 추가해줘.
- 호버 시 "빠른 보기" 버튼 표시
- 작은 모달로 주요 정보만 표시
- "상세보기"로 전환 가능

Cursor에게:

products.json 경로 확인하고,
fetch 에러 처리 개선해줘.
콘솔에 상세한 에러 로그 출력해줘.

Cursor에게:

로컬 스토리지 저장 로직 확인해줘.
- 장바구니 변경할 때마다 저장되는지
- localStorage.setItem() 잘 작동하는지
- JSON.stringify() 제대로 되는지

Cursor에게:

필터 로직 디버깅해줘.
- 여러 필터 동시 적용 시 AND/OR 조건 확인
- 빈 배열 처리 확인
- 콘솔에 필터링된 제품 개수 출력

Cursor에게:

모바일 CSS 미디어 쿼리 확인하고,
특히 장바구니와 모달이 모바일에서
제대로 표시되도록 수정해줘.

제품 카탈로그 사이트를 완성했습니다. 이제 FAQ 페이지를 만들어봅시다!