동네 카페 탐방 일지 - 방문 기록 & 별점 메모
local-cafe-visit-journal
문제 설명
프로젝트 개요
동네에서 방문한 카페들을 기록하고 별점과 메모를 남기는 간단한 웹 애플리케이션입니다. 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에게 보내면 됩니다. 복사 버튼을 눌러 바로 사용하세요.
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 기본 화면이 표시됩니다.
카페 목록 페이지와 등록 폼을 구현해주세요.
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는 완성된 상태입니다.
카페 저장, 상세 보기, 수정, 삭제 기능을 구현해주세요.
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)
로그인 후 제출동네 카페 탐방 일지 - 방문 기록 & 별점 메모
방문한 동네 카페들을 기록하고 별점과 메모를 남길 수 있는 개인 카페 탐방 기록 서비스