풀스택 커피 원두 재고 관리자 - 바이브코딩 레시피
입문 PHP + JavaScript Laravel + React AI: Claude

풀스택 커피 원두 재고 관리자

리포지토리명 coffee-bean-inventory-tracker
조회수 79 0건 제출

문제 설명

풀스택 커피 원두 재고 관리자

홈카페를 즐기는 당신을 위한 원두 재고 관리 시스템입니다. Laravel 13.x API 백엔드와 React 19 프론트엔드로 구성된 풀스택 프로젝트로, 보유 중인 커피 원두를 등록하고 사용량을 기록하며 재고를 추적할 수 있습니다.

필수 기능

  • 원두 등록: 원두 이름, 로스팅 날짜, 초기 용량(g), 원산지, 로스팅 정도를 입력하여 등록
  • 재고 목록 조회: 등록된 모든 원두를 카드 형태로 표시, 남은 용량과 신선도 상태 표시
  • 사용량 기록: 원두 사용 시 사용량(g)을 입력하여 재고 차감
  • 재고 상태 표시: 남은 용량에 따라 색상 구분 (충분/보통/부족)
  • 원두 삭제: 다 쓴 원두 또는 잘못 등록한 원두 삭제

보너스 기능

  • 로스팅 날짜 기준 신선도 경고 (14일 이상 경과 시 알림)
  • 원두별 총 사용량 통계
  • 원산지별 필터링 기능
  • 재고 부족 시 알림 배지 표시

기술 스택

  • 백엔드: Laravel 13.x (RESTful API), SQLite
  • 프론트엔드: React 19 (Vite), Tailwind CSS
  • 통신: fetch API를 통한 백엔드-프론트엔드 데이터 연동

제약 조건

  • • Laravel 13.x와 React 19 최신 버전 사용 필수
  • • Laravel은 API 서버로만 동작 (routes/api.php 사용)
  • • React는 별도 Vite 프로젝트로 구성
  • • 데이터베이스는 SQLite 사용 (간편한 설정)
  • • 복잡한 상태관리 라이브러리 사용 금지 (useState만 사용)
  • • Tailwind CSS로 깔끔한 UI 구성
  • • CORS 설정으로 Laravel API와 React 프론트엔드 연동
  • • 모든 CRUD 작업은 RESTful API 패턴 준수

프롬프트 레시피

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

1
Step 1
mkdir coffee-bean-inventory-tracker && cd coffee-bean-inventory-tracker

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

Laravel 13.x API 백엔드를 설정해주세요:

1. Laravel 프로젝트 생성 (backend 폴더에)
2. SQLite 데이터베이스 설정 (.env 파일 수정)
3. coffee_beans 테이블 마이그레이션 생성:
   - id (primary key)
   - name (string, 원두 이름)
   - origin (string, 원산지)
   - roast_level (string, 로스팅 정도: Light/Medium/Dark)
   - roast_date (date, 로스팅 날짜)
   - initial_amount (integer, 초기 용량 g)
   - current_amount (integer, 현재 용량 g)
   - timestamps
4. 마이그레이션 실행
5. CoffeeBean 모델 생성 (fillable 속성 설정)
6. CORS 설정 (config/cors.php에서 localhost:5173 허용)
7. API 라우트 설정 (routes/api.php):
   - GET /api/coffee-beans (전체 목록)
   - POST /api/coffee-beans (새 원두 등록)
   - PATCH /api/coffee-beans/{id}/use (사용량 차감)
   - DELETE /api/coffee-beans/{id} (삭제)
8. CoffeeBeanController 생성 및 각 API 메서드 구현
9. php artisan serve로 서버 실행 (포트 8000)

현재 용량이 초기 용량의 30% 이하면 '부족', 70% 이하면 '보통', 그 이상이면 '충분' 상태로 판단하는 로직도 포함해주세요.

기대 결과: Laravel API 서버가 http://localhost:8000에서 실행되며, Postman이나 curl로 테스트 시 정상적으로 원두 CRUD API가 동작합니다. CORS 설정이 완료되어 React 프론트엔드와 통신 준비가 되어 있습니다.

2
Step 2
같은 coffee-bean-inventory-tracker 폴더 내에 React 19 프론트엔드를 설정해주세요:

1. frontend 폴더에 Vite + React 프로젝트 생성 (npm create vite@latest frontend -- --template react)
2. Tailwind CSS 설치 및 설정
3. src/App.jsx를 다음과 같이 구성:
   - useState로 원두 목록(beans) 상태 관리
   - useEffect로 컴포넌트 마운트 시 GET /api/coffee-beans 호출하여 목록 불러오기
   - fetch API 사용 (base URL: http://localhost:8000)
   - 원두 목록을 그리드 레이아웃(grid-cols-1 md:grid-cols-2 lg:grid-cols-3)으로 카드 형태 표시
   - 각 카드에는:
     * 원두 이름 (큰 폰트)
     * 원산지 및 로스팅 정도 (작은 텍스트)
     * 로스팅 날짜
     * 진행률 바 (현재 용량/초기 용량 비율로 표시)
     * 남은 용량 텍스트 (예: "250g / 500g 남음")
     * 재고 상태 배지 (충분: 초록, 보통: 노랑, 부족: 빨강)
     * 삭제 버튼
4. 상단에 "새 원두 등록" 버튼 추가 (아직 기능 없음)
5. npm run dev로 개발 서버 실행 (포트 5173)

Tailwind CSS로 깔끔하고 모던한 카드 디자인을 만들어주세요. 진행률 바는 bg-gradient-to-r를 활용해서 시각적으로 예쁘게 표현해주세요.

기대 결과: React 앱이 http://localhost:5173에서 실행되며, Laravel API로부터 원두 목록을 불러와 카드 형태로 화면에 표시됩니다. 재고 상태에 따라 색상이 다르게 표시되고, 진행률 바가 시각적으로 잘 보입니다.

3
Step 3
원두 등록 기능을 추가해주세요:

1. src/components/AddBeanForm.jsx 컴포넌트 생성:
   - 폼 필드: 원두 이름, 원산지, 로스팅 정도(select: Light/Medium/Dark), 로스팅 날짜(date input), 초기 용량(number input, g 단위)
   - 폼 제출 시 POST /api/coffee-beans로 데이터 전송
   - 성공 시 부모 컴포넌트에 알려서 목록 새로고침
   - Tailwind로 폼 스타일링 (input, select, button)
2. App.jsx 수정:
   - "새 원두 등록" 버튼 클릭 시 모달 또는 폼 영역 토글
   - AddBeanForm 컴포넌트 렌더링
   - 등록 완료 후 원두 목록 다시 불러오기
3. 폼 유효성 검사 추가 (빈 값 방지)

모달 스타일은 화면 중앙에 떠 있는 형태로 만들고, 배경은 반투명 검은색 오버레이로 처리해주세요.

기대 결과: "새 원두 등록" 버튼을 클릭하면 모달이 열리고, 폼을 작성하여 제출하면 새 원두가 Laravel API에 저장되며 목록에 즉시 반영됩니다. 폼 유효성 검사가 작동하여 빈 값 제출이 방지됩니다.

4
Step 4
원두 사용량 기록 및 삭제 기능을 구현해주세요:

1. 각 원두 카드에 "사용 기록" 버튼 추가
2. 버튼 클릭 시 사용량 입력 모달 표시:
   - 사용량(g) 입력 필드
   - 확인 버튼 클릭 시 PATCH /api/coffee-beans/{id}/use API 호출
   - 요청 body: { amount: 입력한 사용량 }
   - Laravel 컨트롤러에서 current_amount에서 차감 (음수 방지 로직 포함)
   - 성공 시 목록 새로고침
3. 삭제 버튼 기능 구현:
   - 클릭 시 확인 다이얼로그 표시 ("정말 삭제하시겠습니까?")
   - 확인 시 DELETE /api/coffee-beans/{id} API 호출
   - 성공 시 목록에서 제거
4. 에러 처리:
   - API 호출 실패 시 사용자에게 알림 표시
   - 사용량이 현재 용량보다 많을 경우 경고 메시지

사용량 입력 모달은 간단한 형태로 만들고, 숫자만 입력 가능하도록 제한해주세요.

기대 결과: 원두 카드에서 "사용 기록" 버튼을 클릭하면 모달이 열리고, 사용량을 입력하면 해당 원두의 현재 용량이 차감됩니다. 진행률 바와 남은 용량 텍스트가 실시간으로 업데이트됩니다. 삭제 버튼을 누르면 확인 후 원두가 목록에서 제거됩니다. 모든 작업에서 적절한 에러 처리가 이루어집니다.

제출된 작품 (0)

로그인 후 제출

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

댓글 (0)

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