풀스택 일일 감사 일기 - 매일 3가지 감사한 일 기록하기
daily-gratitude-journal-laravel
문제 설명
풀스택 일일 감사 일기
매일 감사한 일 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에게 보내면 됩니다. 복사 버튼을 눌러 바로 사용하세요.
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 테이블이 생성됩니다.
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에서 실행됩니다.
감사 일기 작성 폼 컴포넌트를 만들어주세요.
요구사항:
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를 통해 데이터가 저장되고, 성공 메시지가 표시됩니다.
작성된 감사 일기 목록을 보여주는 컴포넌트를 만들어주세요.
요구사항:
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)
로그인 후 제출아직 제출된 작품이 없습니다. 첫 번째 도전자가 되어보세요!