풀스택 간단 메모장 - 카테고리별 노트 정리
simple-notes-app-laravel-react
문제 설명
📝 프로젝트 개요
Laravel 13.x API 백엔드와 React 19 프론트엔드로 구성된 간단한 메모장 애플리케이션을 만듭니다. 사용자가 메모를 작성하고, 카테고리별로 분류하며, 검색할 수 있는 기본적인 CRUD 기능을 구현합니다.
✨ 필수 기능
- 메모 작성: 제목과 본문을 입력하여 새로운 메모 생성
- 카테고리 관리: 메모를 '업무', '개인', '아이디어' 등 카테고리로 분류
- 메모 목록: 전체 메모를 카드 형식으로 표시
- 카테고리 필터링: 특정 카테고리의 메모만 보기
- 메모 수정/삭제: 기존 메모 편집 및 삭제
- 검색 기능: 제목이나 본문에서 키워드 검색
- 반응형 디자인: 모바일에서도 사용 가능한 UI
🎁 선택 추가 기능 (보너스)
- 메모에 색상 태그 추가
- 중요 메모 즐겨찾기(별표) 기능
- 메모 작성일/수정일 표시
- 메모 정렬 기능 (최신순, 오래된순, 제목순)
- 다크 모드 지원
- 메모 개수 카운터
🛠 기술 스택
- 백엔드: Laravel 13.x (RESTful API)
- 프론트엔드: React 19 (Vite)
- 데이터베이스: SQLite
- 스타일링: Tailwind CSS
- HTTP 클라이언트: Axios
📚 학습 목표
- Laravel API 라우트 및 컨트롤러 설계
- React에서 API 호출 및 상태 관리 (useState, useEffect)
- RESTful API 설계 원칙 이해
- CORS 설정 및 프론트엔드-백엔드 연동
- React 컴포넌트 분리 및 props 전달
제약 조건
- • Laravel 13.x 사용 (구버전 금지)
- • React 19 사용 (구버전 금지)
- • 프론트엔드는 Vite로 별도 프로젝트 구성
- • 백엔드는 RESTful API로만 응답 (Blade 템플릿 사용 금지)
- • SQLite 데이터베이스 사용
- • Tailwind CSS로 스타일링
- • 복잡한 상태관리 라이브러리 사용 금지 (useState만 사용)
- • 실시간 기능(WebSocket) 사용 금지
프롬프트 레시피
아래 프롬프트를 순서대로 AI에게 보내면 됩니다. 복사 버튼을 눌러 바로 사용하세요.
mkdir simple-notes-app-laravel-react && cd simple-notes-app-laravel-react
이 폴더에서 Laravel 13.x API 백엔드 프로젝트를 시작합니다.
다음 작업을 수행해주세요:
1. Laravel 13.x 프로젝트 생성 (폴더명: backend)
2. SQLite 데이터베이스 설정 (.env 파일에서 DB_CONNECTION=sqlite로 변경)
3. database/database.sqlite 파일 생성
4. Note 모델 및 마이그레이션 생성:
- 필드: id, title (string), content (text), category (string, nullable), created_at, updated_at
5. 마이그레이션 실행
6. CORS 설정: config/cors.php에서 'paths' => ['api/*'], 'allowed_origins' => ['http://localhost:5173']
7. NoteController 생성 및 API 라우트 설정:
- GET /api/notes (전체 메모 목록)
- POST /api/notes (새 메모 생성)
- GET /api/notes/{id} (특정 메모 조회)
- PUT /api/notes/{id} (메모 수정)
- DELETE /api/notes/{id} (메모 삭제)
- GET /api/notes/search?q={keyword} (검색)
모든 API는 JSON 형식으로 응답하도록 설정하세요.
기대 결과: Laravel 백엔드 프로젝트가 생성되고, SQLite 데이터베이스와 Note 모델이 설정됩니다. API 라우트와 컨트롤러가 준비되어 Postman이나 curl로 테스트 가능한 상태가 됩니다. php artisan serve로 서버를 실행하면 http://localhost:8000에서 API에 접근할 수 있습니다.
이제 React 19 프론트엔드 프로젝트를 생성합니다. 다음 작업을 수행해주세요: 1. 현재 폴더(simple-notes-app-laravel-react)에서 Vite + React 19 프로젝트 생성 (폴더명: frontend) 2. axios 설치: npm install axios 3. Tailwind CSS 설치 및 설정 4. src/api/noteApi.js 파일 생성: - axios 인스턴스 생성 (baseURL: 'http://localhost:8000/api') - getAllNotes(), createNote(data), updateNote(id, data), deleteNote(id), searchNotes(query) 함수 작성 5. src/App.jsx 기본 구조 작성: - useState로 notes 배열, selectedCategory, searchQuery 상태 관리 - useEffect로 컴포넌트 마운트 시 전체 메모 불러오기 - 메모 목록 표시 (카드 형식) - 새 메모 작성 폼 (제목, 본문, 카테고리 선택) - 카테고리 필터 버튼 (전체, 업무, 개인, 아이디어) - 검색창 Tailwind CSS로 깔끔한 UI를 디자인하세요. 카드는 그리드 레이아웃으로 배치하고, 반응형 디자인을 적용하세요.
기대 결과: React 프론트엔드 프로젝트가 생성되고, API 호출 함수가 준비됩니다. App.jsx에 메모 목록, 작성 폼, 필터링, 검색 UI가 구현됩니다. npm run dev로 개발 서버를 실행하면 http://localhost:5173에서 애플리케이션에 접근할 수 있습니다.
메모 CRUD 기능을 완성하고 UI 인터랙션을 개선합니다. 다음 작업을 수행해주세요: 1. 메모 작성 기능: - 폼 제출 시 createNote API 호출 - 성공 시 메모 목록 새로고침 및 폼 초기화 - 로딩 상태 표시 2. 메모 수정 기능: - 각 메모 카드에 '수정' 버튼 추가 - 클릭 시 폼에 기존 내용 채우기 (편집 모드) - 수정 완료 시 updateNote API 호출 3. 메모 삭제 기능: - 각 메모 카드에 '삭제' 버튼 추가 - 클릭 시 확인 다이얼로그 표시 후 deleteNote API 호출 4. 카테고리 필터링: - 카테고리 버튼 클릭 시 해당 카테고리 메모만 표시 - '전체' 버튼으로 모든 메모 표시 5. 검색 기능: - 검색창에 입력 시 실시간으로 메모 필터링 (프론트엔드에서 처리) - 또는 검색 버튼 클릭 시 searchNotes API 호출 6. 에러 처리: - API 호출 실패 시 에러 메시지 표시 - 네트워크 오류 처리 7. UI 개선: - 메모가 없을 때 안내 메시지 표시 - 버튼 호버 효과 및 트랜지션 추가 - 메모 카드에 그림자 효과 모든 기능이 Laravel API와 정상적으로 연동되는지 확인하세요.
기대 결과: 메모 작성, 수정, 삭제 기능이 모두 동작하고, 카테고리 필터링과 검색 기능이 완성됩니다. 사용자가 메모를 자유롭게 관리할 수 있으며, UI가 직관적이고 반응형으로 작동합니다. 에러 처리가 적용되어 안정적인 사용자 경험을 제공합니다. 최종적으로 Laravel 백엔드(port 8000)와 React 프론트엔드(port 5173)가 함께 실행되어 풀스택 메모장 애플리케이션이 완성됩니다.
제출된 작품 (0)
로그인 후 제출아직 제출된 작품이 없습니다. 첫 번째 도전자가 되어보세요!