동네 헌책방 도서 거래 장터
used-book-marketplace-laravel
문제 설명
📚 동네 헌책방 도서 거래 장터
동네에서 중고 책을 사고팔 수 있는 간단한 거래 장터를 만듭니다. 사용자들은 읽지 않는 책을 등록하고, 다른 사람들이 올린 책을 둘러보며 관심 있는 책에 '찜하기'를 할 수 있습니다.
필수 기능
- 📖 도서 등록: 책 제목, 저자, 가격, 상태(최상/양호/보통), 책 설명, 판매자 연락처를 입력하여 판매 도서 등록
- 🔍 도서 목록 보기: 등록된 모든 책을 카드 형태로 표시 (썸네일 이미지는 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에게 보내면 됩니다. 복사 버튼을 눌러 바로 사용하세요.
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)를 확인할 수 있습니다.
헌책 거래를 위한 데이터베이스 구조를 만들어주세요: 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 데이터베이스에 테이블이 생성됩니다.
헌책 목록을 보여주는 메인 페이지와 도서 등록 페이지를 만들어주세요:
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 페이지에서 새 도서를 등록할 수 있는 폼이 표시됩니다.
도서 등록 기능과 상세 페이지를 완성해주세요: 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개를 등록하고 목록/상세 페이지가 잘 작동하는지 확인해주세요.
기대 결과: 도서 등록 폼을 통해 새 책을 추가할 수 있습니다. 등록된 책이 메인 페이지에 카드 형태로 표시되고, 카드를 클릭하면 상세 페이지로 이동합니다. 상세 페이지에서 책의 모든 정보와 판매자 연락처를 확인할 수 있습니다.
찜하기 기능과 필터링 기능을 구현해주세요:
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 요청)
- 현재 필터 상태 표시 및 "필터 초기화" 링크
찜하기 기능과 필터링이 작동하는지 테스트해주세요.
기대 결과: 도서 목록과 상세 페이지에서 찜하기 버튼을 클릭하면 하트 아이콘이 채워지고, 다시 클릭하면 해제됩니다. 찜 개수가 실시간으로 업데이트됩니다. 메인 페이지에서 가격대와 상태로 필터링하면 조건에 맞는 책만 표시됩니다.
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)
로그인 후 제출아직 제출된 작품이 없습니다. 첫 번째 도전자가 되어보세요!