동네 헌책방 도서 거래 장터 - 바이브코딩 레시피
입문 PHP Laravel AI: Claude

동네 헌책방 도서 거래 장터

리포지토리명 used-book-marketplace-laravel
조회수 44 0건 제출

문제 설명

📚 동네 헌책방 도서 거래 장터

동네에서 중고 책을 사고팔 수 있는 간단한 거래 장터를 만듭니다. 사용자들은 읽지 않는 책을 등록하고, 다른 사람들이 올린 책을 둘러보며 관심 있는 책에 '찜하기'를 할 수 있습니다.

필수 기능

  • 📖 도서 등록: 책 제목, 저자, 가격, 상태(최상/양호/보통), 책 설명, 판매자 연락처를 입력하여 판매 도서 등록
  • 🔍 도서 목록 보기: 등록된 모든 책을 카드 형태로 표시 (썸네일 이미지는 placeholder 사용)
  • 💰 가격/상태 필터: 가격대(5천원, 5천1만원, 1만원~)와 책 상태로 필터링
  • ❤️ 찜하기 기능: 관심 있는 책을 찜 목록에 추가/제거 (세션 기반)
  • 📝 상세 페이지: 개별 도서의 상세 정보 확인 및 판매자 연락처 표시
  • 🎨 반응형 디자인: Tailwind CSS로 모바일/데스크톱 친화적 UI

보너스 기능

  • 🔎 검색 기능: 책 제목이나 저자로 검색
  • 🏷️ 카테고리: 소설, 에세이, 자기계발, 전공서적 등 카테고리 분류
  • 📊 인기 도서: 찜 개수가 많은 순으로 정렬
  • 🆕 최신 등록순: 최근 등록된 책 우선 표시

이 프로젝트를 통해 Laravel의 기본 CRUD, Blade 템플릿, 라우팅, 세션 관리를 익힐 수 있습니다.

제약 조건

  • • Laravel 13.x + Blade 템플릿 사용 (React/Vue 등 SPA 프레임워크 사용 금지)
  • • Tailwind CSS로 스타일링
  • • SQLite 데이터베이스 사용
  • • 책 이미지는 placeholder 이미지 서비스(예: via.placeholder.com, picsum.photos) 사용
  • • 찜하기는 세션 기반으로 구현 (로그인 불필요)
  • • 외부 API 사용 금지
  • • 실시간 채팅 기능 금지 (판매자 연락처 표시로 대체)

프롬프트 레시피

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

1
Step 1
mkdir used-book-marketplace-laravel && cd used-book-marketplace-laravel

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

Laravel 13.x 신규 프로젝트를 생성하고 기본 설정을 완료해주세요:

1. Laravel 13.x 프로젝트 생성 (composer create-project laravel/laravel . "^13.0")
2. .env 파일에서 DB_CONNECTION을 sqlite로 변경
3. database/database.sqlite 파일 생성
4. Tailwind CSS 설치 및 설정 (npm install -D tailwindcss postcss autoprefixer && npx tailwindcss init -p)
5. tailwind.config.js에서 content 경로 설정: ['./resources/**/*.blade.php', './resources/**/*.js']
6. resources/css/app.css에 Tailwind 디렉티브 추가 (@tailwind base; @tailwind components; @tailwind utilities;)
7. vite.config.js 확인 및 npm run dev 실행 준비

프로젝트 구조와 개발 서버 실행 방법을 알려주세요.

기대 결과: Laravel 13.x 프로젝트가 생성되고, SQLite 데이터베이스 설정이 완료됩니다. Tailwind CSS가 설치되어 스타일링 준비가 완료됩니다. 개발 서버 실행 명령어(php artisan serve, npm run dev)를 확인할 수 있습니다.

2
Step 2
헌책 거래를 위한 데이터베이스 구조를 만들어주세요:

1. Book 모델과 마이그레이션 생성 (php artisan make:model Book -m)
2. 마이그레이션 파일에 다음 컬럼 추가:
   - title (string, 책 제목)
   - author (string, 저자)
   - price (integer, 가격)
   - condition (enum: '최상', '양호', '보통')
   - description (text, 책 설명)
   - category (string, nullable, 카테고리)
   - seller_name (string, 판매자 이름)
   - seller_contact (string, 판매자 연락처)
   - image_url (string, nullable, 책 이미지 URL - placeholder 사용)
   - wishlist_count (integer, default 0, 찜 개수)
   - timestamps
3. 마이그레이션 실행 (php artisan migrate)
4. Book 모델에 $fillable 속성 설정

데이터베이스 테이블 구조를 확인할 수 있는 방법도 알려주세요.

기대 결과: books 테이블이 생성되고, Book 모델에서 사용할 수 있는 컬럼들이 준비됩니다. 마이그레이션이 성공적으로 실행되어 SQLite 데이터베이스에 테이블이 생성됩니다.

3
Step 3
헌책 목록을 보여주는 메인 페이지와 도서 등록 페이지를 만들어주세요:

1. BookController 생성 (php artisan make:controller BookController)
2. 라우트 설정 (routes/web.php):
   - GET / : 도서 목록 페이지 (BookController@index)
   - GET /books/create : 도서 등록 폼 (BookController@create)
   - POST /books : 도서 저장 (BookController@store)
   - GET /books/{id} : 도서 상세 페이지 (BookController@show)
3. BookController에 index 메서드 구현:
   - 모든 책을 최신순으로 가져오기
   - 가격/상태 필터링 쿼리 파라미터 처리 (선택사항)
   - resources/views/books/index.blade.php로 데이터 전달
4. resources/views/books/index.blade.php 생성:
   - Tailwind CSS로 헤더 (제목, 도서 등록 버튼)
   - 필터 섹션 (가격대, 책 상태 선택 폼)
   - 도서 카드 그리드 레이아웃 (3열, 반응형)
   - 각 카드: 책 이미지(placeholder), 제목, 저자, 가격, 상태, 찜 아이콘
   - 도서가 없을 때 안내 메시지
5. resources/views/books/create.blade.php 생성:
   - 도서 등록 폼 (제목, 저자, 가격, 상태 선택, 설명, 카테고리, 판매자 정보)
   - Tailwind CSS 스타일링
   - CSRF 토큰 포함

메인 페이지에서 "아직 등록된 책이 없습니다" 메시지와 "첫 책 등록하기" 버튼이 보이도록 해주세요.

기대 결과: 메인 페이지(/)에 접속하면 헌책 목록을 볼 수 있는 그리드 레이아웃이 표시됩니다. 아직 책이 없으므로 안내 메시지가 보입니다. /books/create 페이지에서 새 도서를 등록할 수 있는 폼이 표시됩니다.

4
Step 4
도서 등록 기능과 상세 페이지를 완성해주세요:

1. BookController의 store 메서드 구현:
   - 폼 데이터 검증 (title, author, price, condition, description, seller_name, seller_contact 필수)
   - image_url은 기본값으로 placeholder 이미지 설정 (예: "https://via.placeholder.com/300x400?text=Book+Cover")
   - Book 모델로 데이터 저장
   - 저장 후 메인 페이지로 리다이렉트 및 성공 메시지
2. BookController의 show 메서드 구현:
   - ID로 책 찾기 (findOrFail)
   - resources/views/books/show.blade.php로 데이터 전달
3. resources/views/books/show.blade.php 생성:
   - 책 이미지 크게 표시
   - 제목, 저자, 가격, 상태, 카테고리 표시
   - 책 설명 전체 내용
   - 판매자 정보 (이름, 연락처)
   - 찜하기 버튼
   - 목록으로 돌아가기 버튼
   - Tailwind CSS로 깔끔한 레이아웃
4. index.blade.php에서 각 도서 카드 클릭 시 상세 페이지로 이동하도록 링크 추가

테스트용 도서 1~2개를 등록하고 목록/상세 페이지가 잘 작동하는지 확인해주세요.

기대 결과: 도서 등록 폼을 통해 새 책을 추가할 수 있습니다. 등록된 책이 메인 페이지에 카드 형태로 표시되고, 카드를 클릭하면 상세 페이지로 이동합니다. 상세 페이지에서 책의 모든 정보와 판매자 연락처를 확인할 수 있습니다.

5
Step 5
찜하기 기능과 필터링 기능을 구현해주세요:

1. 찜하기 기능 (세션 기반):
   - POST /books/{id}/wishlist 라우트 추가 (BookController@toggleWishlist)
   - toggleWishlist 메서드: 세션에 wishlist 배열 저장, 책 ID 추가/제거
   - 찜할 때 Book 모델의 wishlist_count 증가, 찜 해제 시 감소
   - AJAX 없이 폼 제출 후 이전 페이지로 리다이렉트
2. index.blade.php와 show.blade.php에 찜하기 버튼:
   - 세션의 wishlist 배열 확인하여 이미 찜한 책은 하트 아이콘 채우기
   - 찜하기/찜 해제 폼 (POST, CSRF 토큰)
   - Tailwind CSS로 하트 아이콘 스타일링 (채워진 하트: text-red-500, 빈 하트: text-gray-400)
3. 필터링 기능:
   - index 메서드에서 쿼리 파라미터 처리:
     - price_range: 'under5000', '5000to10000', 'over10000'
     - condition: '최상', '양호', '보통'
   - 필터 적용된 쿼리 빌더로 책 목록 필터링
4. index.blade.php 필터 폼:
   - 가격대 선택 (라디오 또는 드롭다운)
   - 상태 선택 (체크박스 또는 드롭다운)
   - "필터 적용" 버튼 (GET 요청)
   - 현재 필터 상태 표시 및 "필터 초기화" 링크

찜하기 기능과 필터링이 작동하는지 테스트해주세요.

기대 결과: 도서 목록과 상세 페이지에서 찜하기 버튼을 클릭하면 하트 아이콘이 채워지고, 다시 클릭하면 해제됩니다. 찜 개수가 실시간으로 업데이트됩니다. 메인 페이지에서 가격대와 상태로 필터링하면 조건에 맞는 책만 표시됩니다.

6
Step 6
UI/UX 개선 및 마무리 작업을 해주세요:

1. 레이아웃 개선:
   - resources/views/layouts/app.blade.php 생성 (공통 레이아웃)
   - 헤더: 로고/사이트명, 도서 등록 버튼, 찜 목록 링크
   - 푸터: 간단한 저작권 정보
   - 모든 페이지에 레이아웃 적용
2. 찜 목록 페이지:
   - GET /wishlist 라우트 추가 (BookController@wishlist)
   - wishlist 메서드: 세션의 찜 목록 ID로 책 조회
   - resources/views/books/wishlist.blade.php 생성 (index와 유사한 카드 레이아웃)
3. 반응형 디자인 강화:
   - 모바일에서 카드 1열, 태블릿 2열, 데스크톱 3열
   - 필터 섹션 모바일에서 토글 가능하도록
4. 빈 상태 디자인:
   - 도서가 없을 때 일러스트 또는 아이콘 추가
   - 찜 목록이 비었을 때 안내 메시지
5. 성공/에러 메시지 표시:
   - 세션 플래시 메시지를 Tailwind CSS 알림으로 표시
   - 도서 등록 성공, 찜 추가/제거 등 사용자 피드백
6. README.md 작성:
   - 프로젝트 소개
   - 설치 및 실행 방법
   - 주요 기능 스크린샷 (선택사항)
   - 사용 기술 스택

전체 기능이 잘 작동하는지 최종 테스트하고, 코드 정리 및 주석 추가를 해주세요.

기대 결과: 완성된 헌책 거래 장터 웹사이트가 작동합니다. 반응형 디자인으로 모바일/데스크톱에서 모두 사용하기 편리합니다. 찜 목록 페이지에서 내가 찜한 책들을 모아볼 수 있습니다. 사용자 친화적인 메시지와 깔끔한 UI로 완성도 높은 프로젝트가 됩니다.

제출된 작품 (0)

로그인 후 제출

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

댓글 (0)

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