풀스택 개인 학습 목표 트래커
personal-learning-goal-tracker
문제 설명
📚 풀스택 개인 학습 목표 트래커
배우고 싶은 기술이나 과목의 학습 목표를 설정하고, 진행 상황을 체크하며 성취감을 얻을 수 있는 웹 애플리케이션입니다. Laravel 12.x로 RESTful API 백엔드를 구축하고, React 19로 인터랙티브한 프론트엔드를 만드는 풀스택 프로젝트입니다.
✅ 필수 기능
- 학습 목표 추가/수정/삭제 (CRUD)
- 각 목표별 진행률 입력 (0~100%)
- 목표 상태 필터링 (전체/진행중/완료)
- 진행률 바를 통한 시각적 표시
- SQLite 데이터베이스 사용
- Laravel API + React 프론트엔드 분리 구조
🎁 선택 추가 기능 (보너스)
- 목표별 카테고리 태그 (프로그래밍, 언어, 디자인 등)
- 완료된 목표 개수 통계 표시
- 목표 달성 시 축하 애니메이션
- 다크모드 지원
- 목표별 메모 필드 추가
제약 조건
- • Laravel 12.x 백엔드 API 서버 사용 (구버전 금지)
- • React 19 프론트엔드 (Vite 번들러) 사용
- • SQLite 데이터베이스 사용 (설치 간편)
- • Tailwind CSS로 스타일링
- • fetch 또는 axios로 API 통신
- • 복잡한 상태관리 라이브러리 사용 금지 (useState만 사용)
- • RESTful API 설계 원칙 준수 (GET, POST, PUT, DELETE)
- • 프론트엔드와 백엔드는 별도 폴더로 분리
프롬프트 레시피
아래 프롬프트를 순서대로 AI에게 보내면 됩니다. 복사 버튼을 눌러 바로 사용하세요.
mkdir personal-learning-goal-tracker && cd personal-learning-goal-tracker 이 폴더에서 프로젝트를 시작합니다. # Laravel 12.x API 백엔드 설정 1. `backend` 폴더에 Laravel 12.x 프로젝트를 생성해주세요. 2. SQLite 데이터베이스를 사용하도록 `.env` 파일을 설정해주세요. 3. `goals` 테이블을 위한 마이그레이션 파일을 생성하고, 다음 필드를 포함해주세요: - id (자동 생성) - title (string, 필수) - 학습 목표 제목 - description (text, nullable) - 상세 설명 - progress (integer, 기본값 0) - 진행률 (0~100) - is_completed (boolean, 기본값 false) - 완료 여부 - created_at, updated_at (타임스탬프) 4. 마이그레이션을 실행하여 테이블을 생성해주세요. 5. `Goal` 모델을 생성하고, fillable 속성을 설정해주세요. 6. CORS 설정을 추가하여 프론트엔드(localhost:5173)에서 API 접근이 가능하도록 해주세요.
기대 결과: Laravel 백엔드 프로젝트가 `backend` 폴더에 생성되고, SQLite 데이터베이스와 goals 테이블이 준비됩니다. Goal 모델이 생성되고 CORS 설정이 완료되어 React에서 API 호출이 가능한 상태가 됩니다.
# Laravel API 라우트 및 컨트롤러 구현
1. `GoalController`를 생성하고 다음 RESTful API 메서드를 구현해주세요:
- `index()` - 모든 학습 목표 조회 (GET /api/goals)
- `store(Request $request)` - 새 학습 목표 생성 (POST /api/goals)
- title 필수 검증
- progress는 0~100 범위 검증
- `update(Request $request, $id)` - 학습 목표 수정 (PUT /api/goals/{id})
- progress 업데이트 시 100이면 is_completed를 true로 자동 설정
- `destroy($id)` - 학습 목표 삭제 (DELETE /api/goals/{id})
2. `routes/api.php`에 위 컨트롤러를 연결하는 라우트를 정의해주세요.
3. 각 API는 JSON 형식으로 응답하도록 해주세요.
4. Laravel 개발 서버를 `php artisan serve` 명령으로 실행하여 API 테스트가 가능하도록 해주세요.
기대 결과: GoalController가 생성되고 CRUD API 엔드포인트가 구현됩니다. Postman이나 curl로 API 테스트가 가능한 상태가 되며, 데이터 검증 로직이 포함됩니다.
# React 19 프론트엔드 프로젝트 설정 1. 프로젝트 루트에 `frontend` 폴더를 만들고, Vite + React 19 프로젝트를 생성해주세요. 2. Tailwind CSS를 설치하고 설정해주세요. 3. `src/App.jsx`를 메인 컴포넌트로 만들고, 다음 UI 레이아웃을 구현해주세요: - 상단에 "📚 학습 목표 트래커" 제목 - 새 목표 추가 폼 (제목 입력, 설명 입력, 추가 버튼) - 목표 목록 표시 영역 4. `useState`를 사용하여 다음 상태를 관리해주세요: - goals (배열) - 학습 목표 목록 - newTitle (문자열) - 새 목표 제목 입력값 - newDescription (문자열) - 새 목표 설명 입력값 5. 아직 API 연동은 하지 말고, 빈 배열 상태로 UI만 구현해주세요. 6. Tailwind CSS로 깔끔하고 현대적인 디자인을 적용해주세요.
기대 결과: React 프론트엔드 프로젝트가 `frontend` 폴더에 생성되고, 기본 UI 레이아웃이 완성됩니다. 입력 폼과 목록 표시 영역이 있지만 아직 데이터는 없는 상태입니다.
# React와 Laravel API 연동
1. `useEffect` 훅을 사용하여 컴포넌트 마운트 시 Laravel API(http://localhost:8000/api/goals)에서 학습 목표 목록을 가져와 상태에 저장해주세요.
2. 새 목표 추가 기능을 구현해주세요:
- 폼 제출 시 POST /api/goals로 데이터 전송
- 성공 시 목록을 다시 불러오고 입력 필드 초기화
3. 각 목표 항목에 다음 UI를 추가해주세요:
- 제목과 설명 표시
- 진행률 바 (0~100% 시각화)
- 진행률 입력 슬라이더 (0~100 범위)
- 슬라이더 변경 시 PUT /api/goals/{id}로 업데이트
- 삭제 버튼 (DELETE /api/goals/{id})
4. 진행률이 100%인 목표는 초록색 배경이나 체크 아이콘으로 시각적 구분을 해주세요.
5. 로딩 상태와 에러 처리를 추가해주세요.
6. `npm run dev`로 개발 서버를 실행하여 전체 기능이 동작하는지 확인해주세요.
기대 결과: React 프론트엔드가 Laravel API와 완전히 연동됩니다. 학습 목표를 추가, 조회, 수정(진행률 업데이트), 삭제할 수 있으며, 진행률이 시각적으로 표시됩니다. 100% 완료된 목표는 시각적으로 구분되어 표시됩니다.