풀스택 일일 감사 일기 - 매일 3가지 감사한 일 기록하기 - 바이브코딩 레시피
입문 PHP + JavaScript Laravel + React AI: Claude

풀스택 일일 감사 일기 - 매일 3가지 감사한 일 기록하기

리포지토리명 daily-gratitude-journal-laravel
조회수 59 0건 제출

문제 설명

풀스택 일일 감사 일기

매일 감사한 일 3가지를 기록하고 돌아보는 긍정 습관 형성 웹 앱을 만듭니다. Laravel 13.x API 백엔드와 React 19 프론트엔드를 분리하여 구성하며, 간단한 CRUD와 날짜별 조회 기능을 구현합니다.

필수 기능

  • 감사 일기 작성: 날짜별로 3가지 감사한 일을 입력하고 저장
  • 일기 목록 보기: 작성한 일기를 최신순으로 카드 형태로 표시
  • 날짜별 조회: 특정 날짜의 일기를 확인
  • 수정/삭제: 작성한 일기를 수정하거나 삭제
  • 감정 이모지: 각 일기에 오늘의 기분을 이모지로 표현 (😊, 😌, 🥰, 😄, 🙏)
  • 반응형 디자인: 모바일과 데스크톱 모두에서 편안한 UI

보너스 기능

  • 월별 통계: 이번 달에 작성한 일기 개수 표시
  • 랜덤 과거 일기: 랜덤으로 과거의 감사 일기 하나를 보여주는 기능
  • 검색 기능: 키워드로 일기 내용 검색
  • 다크 모드: 눈이 편한 다크 테마 지원

기술 스택

  • 백엔드: Laravel 13.x (RESTful API)
  • 프론트엔드: React 19 (Vite)
  • 데이터베이스: SQLite
  • 스타일링: Tailwind CSS

사용자가 매일 긍정적인 순간을 기록하며 감사하는 습관을 기를 수 있도록 돕는 힐링 웹 앱입니다.

제약 조건

  • Laravel 13.x 최신 버전 사용 필수
  • React 19 최신 버전 사용 필수
  • SQLite 데이터베이스 사용 (별도 DB 설치 불필요)
  • Laravel은 API 서버로만 동작 (routes/api.php 사용)
  • React는 별도 Vite 프로젝트로 구성
  • fetch 또는 axios로 API 호출
  • Tailwind CSS로 스타일링
  • 하루에 하나의 일기만 작성 가능 (날짜 중복 방지)
  • 각 일기는 정확히 3개의 감사 항목을 포함
  • 복잡한 상태관리 라이브러리(Redux, Zustand 등) 사용 금지 - useState만 사용
  • CORS 설정 필수 (Laravel config/cors.php)

프롬프트 레시피

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

1
Step 1
mkdir daily-gratitude-journal-laravel && cd daily-gratitude-journal-laravel

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

Laravel 13.x 최신 버전으로 API 백엔드 프로젝트를 생성하고 기본 설정을 완료해주세요.

요구사항:
1. Laravel 13.x 프로젝트 생성 (`backend` 폴더에)
2. SQLite 데이터베이스 설정 (.env 파일 수정)
3. CORS 설정 활성화 (React 프론트엔드와 통신을 위해)
4. Gratitude 모델, 마이그레이션, 컨트롤러 생성
   - 테이블명: gratitudes
   - 필드: id, date (unique), mood_emoji, item_1, item_2, item_3, created_at, updated_at
   - date는 YYYY-MM-DD 형식이며 유니크 제약조건 적용
   - mood_emoji는 감정 이모지 (😊, 😌, 🥰, 😄, 🙏 중 하나)
5. API 라우트 정의 (routes/api.php)
   - GET /api/gratitudes - 전체 목록 (최신순)
   - POST /api/gratitudes - 새 일기 작성
   - GET /api/gratitudes/{id} - 특정 일기 조회
   - PUT /api/gratitudes/{id} - 일기 수정
   - DELETE /api/gratitudes/{id} - 일기 삭제
6. GratitudeController에 CRUD 메서드 구현
7. 마이그레이션 실행

모든 설정이 완료되면 `php artisan serve --host=0.0.0.0 --port=8000` 명령으로 API 서버를 실행할 수 있어야 합니다.

기대 결과: Laravel 백엔드 프로젝트가 생성되고, SQLite 데이터베이스가 설정되며, Gratitude 모델과 API 라우트가 준비됩니다. CORS 설정이 완료되어 React에서 API 호출이 가능해집니다. 마이그레이션이 실행되어 gratitudes 테이블이 생성됩니다.

2
Step 2
React 19 최신 버전으로 프론트엔드 프로젝트를 생성하고 기본 구조를 설정해주세요.

요구사항:
1. Vite를 사용하여 React 19 프로젝트 생성 (`frontend` 폴더에)
2. Tailwind CSS 설치 및 설정
3. axios 설치 (API 통신용)
4. 기본 폴더 구조 생성:
   - src/components/ (재사용 컴포넌트)
   - src/pages/ (페이지 컴포넌트)
   - src/api/ (API 호출 함수)
5. src/api/gratitude.js 파일 생성
   - Laravel API 엔드포인트 (http://localhost:8000/api/gratitudes) 호출 함수 작성
   - fetchGratitudes(), createGratitude(data), updateGratitude(id, data), deleteGratitude(id) 함수 구현
6. App.jsx에 기본 레이아웃 설정
   - 헤더: "✨ 감사 일기" 타이틀
   - 메인 컨텐츠 영역
   - Tailwind CSS로 간단한 스타일링
7. package.json 스크립트 확인 (npm run dev로 개발 서버 실행)

프로젝트가 생성되면 `npm run dev` 명령으로 React 개발 서버를 실행할 수 있어야 합니다.

기대 결과: React 프론트엔드 프로젝트가 생성되고, Tailwind CSS와 axios가 설치됩니다. API 호출 함수가 준비되고, 기본 레이아웃이 표시됩니다. 개발 서버가 http://localhost:5173에서 실행됩니다.

3
Step 3
감사 일기 작성 폼 컴포넌트를 만들어주세요.

요구사항:
1. src/components/GratitudeForm.jsx 컴포넌트 생성
2. 입력 필드:
   - 날짜 선택 (input type="date", 기본값: 오늘)
   - 기분 이모지 선택 (😊, 😌, 🥰, 😄, 🙏 중 하나, 라디오 버튼 또는 버튼 그룹)
   - 감사한 일 1 (textarea)
   - 감사한 일 2 (textarea)
   - 감사한 일 3 (textarea)
3. 제출 버튼 ("저장하기")
4. useState로 폼 데이터 관리
5. 폼 제출 시 createGratitude() API 호출
6. 제출 성공 시:
   - 폼 초기화
   - 성공 메시지 표시 (예: "감사 일기가 저장되었습니다! 🎉")
   - 부모 컴포넌트에 onSuccess 콜백 전달하여 목록 새로고침
7. 에러 처리:
   - 날짜 중복 시 "이미 오늘 일기를 작성했습니다" 메시지 표시
   - 필수 필드 미입력 시 경고 메시지
8. Tailwind CSS로 깔끔한 카드 스타일 적용

App.jsx에 GratitudeForm 컴포넌트를 추가하여 렌더링해주세요.

기대 결과: 감사 일기 작성 폼이 표시되고, 사용자가 날짜, 기분 이모지, 3가지 감사한 일을 입력할 수 있습니다. 제출 버튼 클릭 시 API를 통해 데이터가 저장되고, 성공 메시지가 표시됩니다.

4
Step 4
작성된 감사 일기 목록을 보여주는 컴포넌트를 만들어주세요.

요구사항:
1. src/components/GratitudeList.jsx 컴포넌트 생성
2. 컴포넌트 마운트 시 fetchGratitudes() API 호출하여 일기 목록 가져오기
3. 각 일기를 카드 형태로 표시:
   - 날짜 (예: 2024년 1월 15일)
   - 기분 이모지 (크게 표시)
   - 감사한 일 3가지 (넘버링 또는 불릿 포인트)
   - 수정/삭제 버튼
4. 최신순으로 정렬하여 표시
5. 삭제 버튼 클릭 시:
   - 확인 대화상자 표시 ("정말 삭제하시겠습니까?")
   - deleteGratitude() API 호출
   - 목록 새로고침
6. 수정 버튼 클릭 시:
   - 해당 일기 데이터를 GratitudeForm에 전달하여 수정 모드로 전환 (선택 구현)
7. 일기가 없을 때 "아직 작성한 일기가 없습니다. 오늘 감사한 일을 기록해보세요!" 메시지 표시
8. Tailwind CSS로 그리드 레이아웃 및 카드 스타일 적용 (모바일: 1열, 태블릿: 2열, 데스크톱: 3열)

App.jsx에서 GratitudeList 컴포넌트를 GratitudeForm 아래에 추가하고, 폼 제출 성공 시 목록이 자동으로 새로고침되도록 연결해주세요.

기대 결과: 작성된 감사 일기가 카드 형태로 표시됩니다. 각 카드에는 날짜, 기분 이모지, 3가지 감사 항목이 보이며, 수정/삭제 버튼이 작동합니다. 반응형 그리드 레이아웃이 적용되어 화면 크기에 따라 카드 개수가 조정됩니다.

제출된 작품 (0)

로그인 후 제출

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

댓글 (0)

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