동네 맛집 지도 - 내가 다녀온 식당 기록 - 바이브코딩 레시피
입문 PHP Laravel AI: Claude

동네 맛집 지도 - 내가 다녀온 식당 기록

리포지토리명 local-restaurant-diary
조회수 288 1건 제출

문제 설명

프로젝트 개요

내가 다녀온 동네 맛집을 지도에 표시하고 기록하는 Laravel 기반 웹 애플리케이션입니다. 식당 이름, 위치, 방문 날짜, 별점, 메모를 저장하고 목록으로 확인할 수 있습니다.

필수 기능

  • 식당 정보 등록 (이름, 주소, 카테고리, 별점, 방문 날짜, 메모)
  • 등록된 식당 목록 조회 (카드형 레이아웃)
  • 식당 상세 정보 보기
  • 식당 정보 수정 및 삭제
  • 카테고리별 필터링 (한식, 중식, 일식, 양식, 카페 등)
  • 별점 순/최신 순 정렬
  • SQLite 데이터베이스 사용
  • Tailwind CSS로 모바일 친화적 UI 구성

보너스 기능

  • 식당 사진 업로드 (1장)
  • 검색 기능 (식당 이름/주소)
  • 재방문 여부 체크박스
  • 평균 별점 통계 표시
  • 방문 횟수가 많은 카테고리 표시

기술 스택

  • Laravel 12.x
  • Blade 템플릿 엔진
  • Tailwind CSS
  • SQLite
  • Alpine.js (간단한 인터랙션용)

제약 조건

  • • Laravel 12.x 사용 (구버전 금지)
  • • Blade 템플릿만 사용 (React, Vue 등 SPA 프레임워크 사용 금지)
  • • SQLite 데이터베이스 사용
  • • Tailwind CSS로 스타일링
  • • 별점은 1~5점 (0.5점 단위 허용)
  • • 카테고리는 미리 정의된 목록 사용 (한식, 중식, 일식, 양식, 카페, 기타)
  • • 반응형 디자인 (모바일 우선)
  • • CSRF 보호 활성화
  • • 폼 유효성 검사 구현

프롬프트 레시피

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

1
Step 1
Laravel 12.x 프로젝트를 생성하고 기본 설정을 해주세요.

요구사항:
1. 프로젝트명: local-restaurant-diary
2. SQLite 데이터베이스 설정 (.env 파일에서 DB_CONNECTION=sqlite)
3. database/database.sqlite 파일 생성
4. Tailwind CSS 설치 및 설정 (Laravel 공식 가이드 참고)
5. Alpine.js CDN 추가 (resources/views/layouts/app.blade.php)
6. 기본 레이아웃 파일 생성 (app.blade.php):
   - 네비게이션 바 (로고, 메뉴)
   - 메인 콘텐츠 영역
   - 푸터
   - Tailwind CSS 클래스 사용
   - 모바일 반응형

레이아웃에는 다음 요소를 포함해주세요:
- 상단 네비게이션: '동네 맛집 지도' 로고, '맛집 추가' 버튼, '전체 목록' 링크
- yield('content') 영역
- 간단한 푸터 (제작 정보)

프로젝트 구조와 초기 설정이 완료되면 다음 단계로 넘어갈 수 있도록 준비해주세요.

기대 결과: Laravel 12.x 프로젝트가 생성되고, SQLite 데이터베이스 설정 완료, Tailwind CSS와 Alpine.js가 설치되어 있으며, 기본 레이아웃 파일(app.blade.php)이 생성되어 네비게이션과 푸터가 포함된 상태

2
Step 2
식당(Restaurant) 모델과 마이그레이션, 컨트롤러를 생성해주세요.

요구사항:

1. Restaurant 모델 생성 (php artisan make:model Restaurant -mcr)
   - 마이그레이션, 컨트롤러(RestaurantController)도 함께 생성

2. 마이그레이션 파일 (create_restaurants_table.php):
   - id (primary key)
   - name (string, 식당 이름)
   - address (string, 주소)
   - category (string, 카테고리: 한식/중식/일식/양식/카페/기타)
   - rating (decimal, 별점 1.0~5.0, 소수점 1자리)
   - visited_at (date, 방문 날짜)
   - memo (text, nullable, 메모)
   - is_revisit (boolean, default false, 재방문 여부)
   - timestamps

3. Restaurant 모델:
   - fillable 속성 정의
   - visited_at을 Carbon 인스턴스로 캐스팅
   - rating 유효성 검사 (1.0~5.0 범위)

4. RestaurantController:
   - index() 메서드: 전체 목록 조회 (최신순)
   - create() 메서드: 등록 폼 표시
   - store() 메서드: 새 식당 저장
   - show() 메서드: 상세 정보
   - edit() 메서드: 수정 폼
   - update() 메서드: 정보 수정
   - destroy() 메서드: 삭제

5. routes/web.php에 RESTful 라우트 등록:
   - Route::resource('restaurants', RestaurantController::class);
   - 홈페이지(/)는 restaurants.index로 리다이렉트

6. 마이그레이션 실행 (php artisan migrate)

컨트롤러 메서드에는 아직 상세 로직을 구현하지 않아도 됩니다. 다음 단계에서 Blade 뷰와 함께 구현하겠습니다.

기대 결과: Restaurant 모델, 마이그레이션, RestaurantController가 생성되고, 데이터베이스 테이블이 생성되며, RESTful 라우트가 등록된 상태. 컨트롤러의 기본 메서드 구조가 준비됨

3
Step 3
식당 목록 페이지와 등록 폼을 구현해주세요.

요구사항:

1. resources/views/restaurants/index.blade.php 생성:
   - 상단에 '맛집 추가' 버튼 (restaurants.create로 이동)
   - 카테고리 필터 버튼 (전체/한식/중식/일식/양식/카페/기타)
   - 정렬 옵션 (최신순/별점 높은 순/별점 낮은 순)
   - 식당 카드 그리드 레이아웃 (모바일: 1열, 태블릿: 2열, 데스크톱: 3열)
   - 각 카드에 표시: 식당 이름, 카테고리 뱃지, 별점(⭐), 주소, 방문 날짜, 재방문 뱃지
   - 카드 클릭 시 상세 페이지로 이동
   - 등록된 식당이 없을 때 안내 메시지

2. resources/views/restaurants/create.blade.php 생성:
   - 식당 등록 폼
   - 필드: 이름(required), 주소(required), 카테고리(select, required), 별점(1~5, 0.5 단위 선택, required), 방문 날짜(date, required), 메모(textarea, optional), 재방문 여부(checkbox)
   - Tailwind CSS로 폼 스타일링
   - 유효성 검사 에러 메시지 표시 영역
   - '저장' 버튼과 '취소' 버튼

3. RestaurantController 로직 구현:
   - index(): 카테고리 필터와 정렬 쿼리 파라미터 처리, 뷰에 데이터 전달
   - create(): 빈 폼 표시
   - store(): 폼 데이터 유효성 검사 및 저장, 성공 시 목록으로 리다이렉트 + 성공 메시지

4. Alpine.js로 별점 입력 UI 구현 (별 아이콘 클릭/호버 효과)

5. 세션 플래시 메시지 표시 (성공/에러)

Tailwind CSS를 사용하여 깔끔하고 현대적인 디자인으로 만들어주세요.

기대 결과: 식당 목록 페이지가 카드 그리드로 표시되고, 카테고리 필터와 정렬 기능이 작동하며, 식당 등록 폼이 모든 필드와 유효성 검사를 포함하여 완성된 상태. 폼 제출 시 데이터가 저장되고 목록으로 돌아감

4
Step 4
식당 상세 페이지, 수정 및 삭제 기능을 구현해주세요.

요구사항:

1. resources/views/restaurants/show.blade.php 생성:
   - 식당 이름 (큰 제목)
   - 카테고리 뱃지
   - 별점 표시 (⭐ 아이콘으로 시각화)
   - 주소
   - 방문 날짜
   - 재방문 여부 표시
   - 메모 (있을 경우)
   - 하단에 '수정' 버튼, '삭제' 버튼, '목록으로' 버튼
   - 카드형 레이아웃으로 깔끔하게 정리

2. resources/views/restaurants/edit.blade.php 생성:
   - create.blade.php와 유사한 폼
   - 기존 데이터가 입력된 상태로 표시
   - '수정 완료' 버튼과 '취소' 버튼

3. RestaurantController 로직 구현:
   - show($id): 특정 식당 조회 및 뷰 전달
   - edit($id): 수정 폼에 기존 데이터 전달
   - update(Request $request, $id): 유효성 검사 후 데이터 수정, 성공 메시지와 함께 상세 페이지로 리다이렉트
   - destroy($id): 식당 삭제, 성공 메시지와 함께 목록으로 리다이렉트

4. 삭제 확인 모달:
   - Alpine.js로 간단한 확인 대화상자 구현
   - "정말 삭제하시겠습니까?" 메시지
   - '삭제' / '취소' 버튼

5. 폼 재사용을 위한 Blade 컴포넌트 (선택사항):
   - resources/views/components/restaurant-form.blade.php
   - create와 edit에서 공통 사용

6. 에러 핸들링:
   - 존재하지 않는 식당 ID 접근 시 404 에러
   - 유효성 검사 실패 시 에러 메시지 표시

모든 페이지가 모바일 반응형이고 Tailwind CSS로 일관된 디자인을 유지하도록 해주세요.

기대 결과: 식당 상세 페이지가 모든 정보를 보기 좋게 표시하고, 수정 폼이 기존 데이터로 채워져 작동하며, 삭제 확인 모달이 구현되고, 모든 CRUD 기능이 완전히 작동하는 상태. 에러 핸들링과 성공 메시지가 적절히 표시됨

제출된 작품 (1)

로그인 후 제출

내가 방문한 동네 맛집을 지도에 기록하고 관리할 수 있는 개인 맛집 다이어리 서비스

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

댓글 (0)

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