Laravel 미니 상품 카탈로그 - 위시리스트 담기
laravel-product-wishlist-catalog
문제 설명
프로젝트 개요
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에게 보내면 됩니다. 복사 버튼을 눌러 바로 사용하세요.
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가 통합된 기본 레이아웃 파일이 완성됩니다. 브라우저에서 접속 시 네비게이션 바와 기본 레이아웃이 표시되어야 합니다.
상품(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 명령으로 확인 가능해야 합니다.
상품 목록 페이지와 상세 페이지를 구현해주세요:
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})로 이동하여 상세 정보를 볼 수 있습니다. 반응형으로 모바일/데스크톱에서 모두 잘 보여야 합니다.
위시리스트 기능을 구현해주세요 (세션 기반):
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)
로그인 후 제출아직 제출된 작품이 없습니다. 첫 번째 도전자가 되어보세요!