동네 카페 탐방 일지 - 방문 기록 & 별점 메모 - 바이브코딩 레시피
입문 PHP Laravel AI: Claude

동네 카페 탐방 일지 - 방문 기록 & 별점 메모

리포지토리명 local-cafe-visit-journal
조회수 96 1건 제출

문제 설명

프로젝트 개요

동네에서 방문한 카페들을 기록하고 별점과 메모를 남기는 간단한 웹 애플리케이션입니다. Laravel 12.x + Blade 템플릿 + Tailwind CSS로 구현하며, SQLite 데이터베이스를 활용한 기본적인 CRUD 기능을 학습할 수 있습니다.

필수 기능

  • 카페 등록: 카페 이름, 주소, 방문 날짜, 별점(1~5), 메모를 입력하여 저장
  • 목록 보기: 등록된 카페 목록을 카드 형태로 표시 (별점, 방문 날짜 포함)
  • 상세 보기: 특정 카페를 클릭하면 상세 정보 표시
  • 수정/삭제: 등록된 카페 정보를 수정하거나 삭제
  • 별점 필터: 별점별로 카페 목록 필터링 (전체/5점/4점 이상 등)
  • 반응형 디자인: 모바일에서도 보기 좋은 UI

보너스 기능

  • 방문 횟수 카운트 (같은 카페 재방문 시 횟수 증가)
  • 사진 업로드 기능 (카페 분위기 사진)
  • 태그 기능 (예: #조용한 #와이파이좋음 #디저트맛집)
  • 최근 방문 순 정렬
  • 평균 별점 통계 대시보드

기술 스택

  • Laravel 12.x (Blade 템플릿)
  • SQLite 데이터베이스
  • Tailwind CSS
  • Alpine.js (선택적, 간단한 인터랙션용)

제약 조건

  • • Laravel 12.x 사용 (최신 버전)
  • • Blade 템플릿 엔진으로 뷰 구성 (React/Vue 사용 금지)
  • • SQLite 데이터베이스 사용 (.env 설정 필요)
  • • Tailwind CSS로 스타일링
  • • RESTful 라우팅 패턴 준수 (resource controller 활용)
  • • Form validation 적용 (Laravel의 Request Validation 사용)
  • • Blade 컴포넌트를 활용한 재사용 가능한 UI 구성
  • • CSRF 보호 활성화 (@csrf 디렉티브 사용)

프롬프트 레시피

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

1
Step 1
mkdir local-cafe-visit-journal && cd local-cafe-visit-journal

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

다음 작업을 수행해주세요:

1. Laravel 12.x 프로젝트 생성 (composer create-project laravel/laravel .)
2. .env 파일을 SQLite 사용하도록 설정:
   - DB_CONNECTION=sqlite
   - DB_DATABASE=/absolute/path/to/database.sqlite (또는 상대경로)
   - database/database.sqlite 파일 생성 (touch database/database.sqlite)
3. Tailwind CSS 설치 및 설정:
   - npm install -D tailwindcss postcss autoprefixer
   - npx tailwindcss init -p
   - tailwind.config.js에 content 경로 설정: ['./resources/**/*.blade.php', './resources/**/*.js']
   - resources/css/app.css에 Tailwind 디렉티브 추가 (@tailwind base; @tailwind components; @tailwind utilities;)
4. Cafe 모델과 마이그레이션 생성:
   - php artisan make:model Cafe -m
   - 마이그레이션 파일에 다음 컬럼 추가:
     * name (string, 카페 이름)
     * address (string, 주소)
     * visited_at (date, 방문 날짜)
     * rating (integer, 별점 1~5)
     * notes (text, nullable, 메모)
     * timestamps
5. php artisan migrate 실행
6. CafeController 생성 (php artisan make:controller CafeController --resource)
7. routes/web.php에 resource 라우트 등록: Route::resource('cafes', CafeController::class);

프로젝트 기본 구조가 완성되면 'php artisan serve'로 서버를 실행하고 http://localhost:8000 접속 가능 여부를 확인해주세요.

기대 결과: Laravel 12.x 프로젝트가 생성되고, SQLite 데이터베이스가 설정되며, Cafe 모델/마이그레이션/컨트롤러가 생성됩니다. Tailwind CSS도 설치되어 npm run dev로 빌드 가능한 상태가 됩니다. php artisan serve 실행 시 Laravel 기본 화면이 표시됩니다.

2
Step 2
카페 목록 페이지와 등록 폼을 구현해주세요.

1. CafeController의 index 메서드:
   - 모든 카페를 최근 방문 순으로 조회 (Cafe::orderBy('visited_at', 'desc')->get())
   - cafes/index.blade.php 뷰로 전달

2. resources/views/cafes/index.blade.php 생성:
   - Tailwind CSS로 깔끔한 레이아웃 구성
   - 상단에 "동네 카페 탐방 일지" 제목과 "새 카페 등록" 버튼 (route('cafes.create')로 이동)
   - 카페 목록을 그리드 카드 형태로 표시 (각 카드에 카페 이름, 주소, 방문 날짜, 별점 표시)
   - 별점은 ⭐ 이모지로 시각화 (예: 4점이면 ⭐⭐⭐⭐)
   - 각 카드 클릭 시 상세 페이지로 이동 (route('cafes.show', $cafe))
   - 카페가 없을 경우 "아직 등록된 카페가 없습니다" 메시지 표시

3. CafeController의 create 메서드:
   - cafes/create.blade.php 뷰 반환

4. resources/views/cafes/create.blade.php 생성:
   - 카페 등록 폼 구현 (POST route('cafes.store'))
   - 입력 필드: 카페 이름, 주소, 방문 날짜 (type="date"), 별점 (select 1~5), 메모 (textarea)
   - Tailwind CSS로 폼 스타일링 (라벨, 인풋, 버튼 등)
   - @csrf 토큰 포함
   - "등록" 버튼과 "취소" 버튼 (목록으로 돌아가기)
   - 유효성 검사 에러 메시지 표시 영역 (@error 디렉티브 활용)

5. resources/views/layouts/app.blade.php 레이아웃 파일 생성:
   - HTML 기본 구조, Tailwind CSS 링크 (@vite(['resources/css/app.css', 'resources/js/app.js']))
   - 네비게이션 바 (홈 링크)
   - @yield('content') 영역
   - index.blade.php와 create.blade.php에서 @extends('layouts.app') 사용

npm run dev를 실행하여 Tailwind CSS가 빌드되도록 하고, /cafes 경로로 접속하면 목록 페이지가 표시되어야 합니다.

기대 결과: 카페 목록 페이지가 생성되고, 새 카페 등록 폼 페이지가 구현됩니다. 목록은 카드 형태로 표시되며 별점이 이모지로 시각화됩니다. 등록 폼은 모든 필수 입력 필드를 포함하고 Tailwind CSS로 스타일링됩니다. 아직 데이터 저장 기능은 없지만 UI는 완성된 상태입니다.

3
Step 3
카페 저장, 상세 보기, 수정, 삭제 기능을 구현해주세요.

1. CafeController의 store 메서드:
   - 폼 데이터 유효성 검사:
     * name: required, string, max:255
     * address: required, string, max:500
     * visited_at: required, date
     * rating: required, integer, between:1,5
     * notes: nullable, string, max:2000
   - Cafe::create()로 데이터 저장
   - 저장 후 목록 페이지로 리다이렉트 (with 메시지: "카페가 등록되었습니다!")

2. CafeController의 show 메서드:
   - ID로 카페 조회 (Cafe::findOrFail($id))
   - cafes/show.blade.php 뷰로 전달

3. resources/views/cafes/show.blade.php 생성:
   - 카페 상세 정보 표시 (이름, 주소, 방문 날짜, 별점, 메모)
   - 별점은 큰 이모지로 표시
   - "수정" 버튼 (route('cafes.edit', $cafe))
   - "삭제" 버튼 (DELETE 폼, route('cafes.destroy', $cafe), 확인 다이얼로그 포함)
   - "목록으로" 버튼
   - Tailwind CSS로 카드 형태의 깔끔한 디자인

4. CafeController의 edit 메서드:
   - ID로 카페 조회
   - cafes/edit.blade.php 뷰로 전달

5. resources/views/cafes/edit.blade.php 생성:
   - create.blade.php와 유사하지만 기존 데이터가 입력 필드에 채워진 상태
   - PUT route('cafes.update', $cafe) 폼
   - @method('PUT') 포함

6. CafeController의 update 메서드:
   - store와 동일한 유효성 검사
   - $cafe->update($request->validated())
   - 수정 후 상세 페이지로 리다이렉트 (with 메시지: "카페 정보가 수정되었습니다!")

7. CafeController의 destroy 메서드:
   - $cafe->delete()
   - 삭제 후 목록 페이지로 리다이렉트 (with 메시지: "카페가 삭제되었습니다!")

8. index.blade.php에 성공 메시지 표시 영역 추가:
   - @if(session('success')) 디렉티브로 메시지 표시
   - Tailwind CSS로 알림 스타일링 (녹색 배경)

9. Cafe 모델에 $fillable 속성 추가:
   - protected $fillable = ['name', 'address', 'visited_at', 'rating', 'notes'];

모든 CRUD 기능이 작동하는지 테스트해주세요. 카페를 등록하고, 상세 보기, 수정, 삭제가 정상적으로 동작해야 합니다.

기대 결과: 카페 등록, 조회, 수정, 삭제 기능이 모두 구현됩니다. 폼 유효성 검사가 작동하고, 성공/에러 메시지가 표시됩니다. 사용자는 카페를 등록하고 목록에서 확인할 수 있으며, 상세 페이지에서 정보를 수정하거나 삭제할 수 있습니다. Tailwind CSS로 모든 페이지가 깔끔하게 스타일링됩니다.

제출된 작품 (1)

로그인 후 제출

방문한 동네 카페들을 기록하고 별점과 메모를 남길 수 있는 개인 카페 탐방 기록 서비스

조회수 134 댓글수 0 추천수 0

댓글 (0)

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