Laravel 미니 상품 카탈로그 - 위시리스트 담기 - 바이브코딩 레시피
입문 PHP Laravel AI: Claude

Laravel 미니 상품 카탈로그 - 위시리스트 담기

리포지토리명 laravel-product-wishlist-catalog
조회수 35 0건 제출

문제 설명

프로젝트 개요

Laravel 13.x와 Blade 템플릿을 활용하여 간단한 상품 카탈로그와 위시리스트 기능을 구현합니다. 사용자가 상품 목록을 탐색하고, 마음에 드는 상품을 위시리스트에 추가/제거할 수 있는 쇼핑몰의 기본 기능을 경험해볼 수 있습니다.

필수 기능

  • 상품 목록 페이지: 데이터베이스에 저장된 상품들을 카드 형태로 보여주기 (이미지, 이름, 가격, 간단한 설명)
  • 상품 상세 페이지: 개별 상품의 자세한 정보 표시
  • 위시리스트 기능: 하트 버튼 클릭으로 위시리스트 추가/제거 (세션 기반)
  • 위시리스트 페이지: 내가 담은 위시리스트 상품 목록 보기
  • 반응형 디자인: Tailwind CSS를 활용한 모바일 친화적 UI
  • SQLite 데이터베이스: 간단한 상품 테이블 (id, name, price, description, image_url, created_at)

보너스 기능

  • 상품 카테고리 필터링 (전자제품, 의류, 도서 등)
  • 가격순, 최신순 정렬 기능
  • 상품 검색 기능
  • 위시리스트 상품 개수 뱃지 표시
  • 간단한 애니메이션 효과 (하트 버튼 클릭 시)

학습 목표

  • Laravel의 MVC 패턴 이해
  • Eloquent ORM을 통한 데이터베이스 조작
  • Blade 템플릿 엔진과 컴포넌트 활용
  • 세션을 이용한 간단한 상태 관리
  • 라우팅과 컨트롤러 구조 파악

제약 조건

  • • Laravel 13.x 사용 (최신 버전)
  • • Blade 템플릿 엔진 사용 (React, Vue 등 SPA 프레임워크 사용 금지)
  • • SQLite 데이터베이스 사용
  • • Tailwind CSS로 스타일링
  • • 세션 기반 위시리스트 구현 (인증 불필요)
  • • 시더(Seeder)로 최소 10개 이상의 샘플 상품 데이터 생성
  • • 반응형 디자인 (모바일, 태블릿, 데스크톱 대응)

프롬프트 레시피

아래 프롬프트를 순서대로 AI에게 보내면 됩니다. 복사 버튼을 눌러 바로 사용하세요.

1
Step 1
mkdir laravel-product-wishlist-catalog && cd laravel-product-wishlist-catalog

이 폴더에서 Laravel 13.x 프로젝트를 생성합니다.

다음 요구사항으로 Laravel 프로젝트를 초기화해주세요:

1. Laravel 13.x 최신 버전으로 프로젝트 생성
2. SQLite 데이터베이스 설정 (.env 파일에서 DB_CONNECTION=sqlite 설정)
3. database/database.sqlite 파일 생성
4. Tailwind CSS 설치 및 설정 (Laravel Mix 또는 Vite 사용)
5. 기본 레이아웃 Blade 파일 생성 (resources/views/layouts/app.blade.php)
   - Tailwind CSS CDN 또는 빌드된 CSS 포함
   - 네비게이션 바 (로고, 상품 목록, 위시리스트 링크)
   - 메인 콘텐츠 영역
   - 푸터

레이아웃은 깔끔하고 현대적인 디자인으로 만들어주세요. 네비게이션 바는 상단 고정, 반응형으로 모바일에서는 햄버거 메뉴로 변환되도록 해주세요.

기대 결과: Laravel 13.x 프로젝트가 생성되고, SQLite 데이터베이스가 설정되며, Tailwind CSS가 통합된 기본 레이아웃 파일이 완성됩니다. 브라우저에서 접속 시 네비게이션 바와 기본 레이아웃이 표시되어야 합니다.

2
Step 2
상품(Product) 모델과 데이터베이스 구조를 생성해주세요:

1. Product 모델 생성 (app/Models/Product.php)
2. products 테이블 마이그레이션 파일 생성
   - id (primary key)
   - name (string, 상품명)
   - price (decimal, 가격 - 소수점 2자리)
   - description (text, 상품 설명)
   - image_url (string, 이미지 URL)
   - category (string, 카테고리 - 전자제품, 의류, 도서, 식품 등)
   - timestamps (created_at, updated_at)

3. ProductSeeder 생성하여 최소 15개의 샘플 상품 데이터 생성
   - 다양한 카테고리의 상품 포함
   - 실제 쇼핑몰처럼 보이는 현실적인 상품명과 가격
   - 이미지 URL은 Unsplash 또는 Placeholder 이미지 사용
   - 각 상품마다 매력적인 설명 추가

4. DatabaseSeeder에서 ProductSeeder 호출
5. 마이그레이션 실행 및 시더 실행

샘플 데이터는 전자제품(노트북, 이어폰 등), 의류(티셔츠, 청바지 등), 도서(소설, 자기계발서 등), 식품(커피, 초콜릿 등) 등 다양한 카테고리로 구성해주세요.

기대 결과: products 테이블이 생성되고 15개 이상의 샘플 상품 데이터가 데이터베이스에 저장됩니다. php artisan migrate:fresh --seed 명령으로 확인 가능해야 합니다.

3
Step 3
상품 목록 페이지와 상세 페이지를 구현해주세요:

1. ProductController 생성 (app/Http/Controllers/ProductController.php)
   - index() 메서드: 모든 상품 목록 조회 및 뷰 반환
   - show($id) 메서드: 개별 상품 상세 정보 조회 및 뷰 반환

2. 라우트 설정 (routes/web.php)
   - GET / -> ProductController@index (홈 페이지 겸 상품 목록)
   - GET /products/{id} -> ProductController@show (상품 상세)

3. 상품 목록 뷰 생성 (resources/views/products/index.blade.php)
   - 그리드 레이아웃 (모바일: 1열, 태블릿: 2열, 데스크톱: 3-4열)
   - 각 상품 카드에 이미지, 상품명, 가격, 간단한 설명 표시
   - 상품 클릭 시 상세 페이지로 이동
   - 위시리스트 하트 버튼 (아직 기능은 없음, 다음 단계에서 구현)

4. 상품 상세 뷰 생성 (resources/views/products/show.blade.php)
   - 큰 이미지와 상세 정보 표시
   - 가격 강조 표시
   - 위시리스트 추가 버튼 (아직 기능은 없음)
   - 목록으로 돌아가기 버튼

Tailwind CSS를 활용하여 깔끔하고 현대적인 카드 디자인으로 만들어주세요. 호버 효과와 그림자 등으로 인터랙티브하게 만들어주세요.

기대 결과: 브라우저에서 상품 목록 페이지(/)에 접속하면 15개의 상품이 그리드 형태로 표시되고, 각 상품을 클릭하면 상세 페이지(/products/{id})로 이동하여 상세 정보를 볼 수 있습니다. 반응형으로 모바일/데스크톱에서 모두 잘 보여야 합니다.

4
Step 4
위시리스트 기능을 구현해주세요 (세션 기반):

1. WishlistController 생성 (app/Http/Controllers/WishlistController.php)
   - index() 메서드: 세션에 저장된 위시리스트 상품 ID로 상품 조회 및 뷰 반환
   - add($id) 메서드: 상품 ID를 세션의 위시리스트 배열에 추가 (POST)
   - remove($id) 메서드: 상품 ID를 세션의 위시리스트 배열에서 제거 (DELETE)

2. 라우트 추가 (routes/web.php)
   - GET /wishlist -> WishlistController@index
   - POST /wishlist/add/{id} -> WishlistController@add
   - DELETE /wishlist/remove/{id} -> WishlistController@remove

3. 상품 목록/상세 페이지에 위시리스트 버튼 기능 추가
   - 하트 아이콘 버튼 (비어있는 하트 / 채워진 하트)
   - 이미 위시리스트에 있으면 채워진 하트, 없으면 빈 하트
   - 클릭 시 AJAX 또는 Form으로 add/remove 요청
   - Blade에서 session('wishlist')로 현재 위시리스트 상태 확인

4. 위시리스트 페이지 뷰 생성 (resources/views/wishlist/index.blade.php)
   - 위시리스트에 담긴 상품들을 목록으로 표시
   - 각 상품마다 제거 버튼
   - 위시리스트가 비어있으면 "위시리스트가 비어있습니다" 메시지

5. 네비게이션 바에 위시리스트 링크와 개수 뱃지 추가

Tailwind CSS로 하트 아이콘 스타일링하고, 클릭 시 부드러운 애니메이션 효과를 추가해주세요.

기대 결과: 상품 목록/상세 페이지에서 하트 버튼을 클릭하면 위시리스트에 추가/제거되고, /wishlist 페이지에서 담긴 상품들을 확인할 수 있습니다. 네비게이션 바에 위시리스트 개수가 뱃지로 표시됩니다. 세션이 유지되는 동안 위시리스트가 보존됩니다.

제출된 작품 (0)

로그인 후 제출

아직 제출된 작품이 없습니다. 첫 번째 도전자가 되어보세요!

댓글 (0)

로그인 후 댓글을 남길 수 있습니다.
아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!