Laravel 할인 쿠폰 발급기 - 간단한 프로모션 관리 - 바이브코딩 레시피
입문 PHP Laravel AI: Claude

Laravel 할인 쿠폰 발급기 - 간단한 프로모션 관리

리포지토리명 coupon-generator-laravel
조회수 62 0건 제출

문제 설명

Laravel 할인 쿠폰 발급기

카페나 소규모 상점에서 사용할 수 있는 간단한 쿠폰 발급 시스템을 만들어봅니다. 관리자가 쿠폰 코드를 생성하고, 고객이 쿠폰 코드를 조회하여 할인 정보를 확인할 수 있는 웹 애플리케이션입니다.

필수 기능

  • 쿠폰 생성: 쿠폰 이름, 할인율(또는 할인 금액), 유효기간 입력
  • 쿠폰 목록: 생성된 모든 쿠폰을 테이블 형태로 표시 (이름, 코드, 할인율, 유효기간, 사용여부)
  • 쿠폰 코드 자동 생성: 랜덤 8자리 영문+숫자 조합 (예: AB12CD34)
  • 쿠폰 조회 페이지: 고객이 쿠폰 코드를 입력하면 할인 정보 표시
  • 쿠폰 사용 처리: 조회 페이지에서 '사용하기' 버튼 클릭 시 쿠폰 상태를 '사용됨'으로 변경
  • 유효기간 검증: 만료된 쿠폰은 사용 불가 메시지 표시
  • SQLite 데이터베이스 사용

UI 요구사항

  • Tailwind CSS로 깔끔한 카드 레이아웃
  • 관리자 페이지(쿠폰 생성/목록)와 고객 페이지(쿠폰 조회) 분리
  • 반응형 디자인 (모바일에서도 잘 보이도록)
  • 쿠폰 상태에 따라 색상 구분 (사용 가능: 초록, 사용됨: 회색, 만료: 빨강)

보너스 기능 (선택)

  • 쿠폰 삭제 기능
  • 쿠폰 사용 통계 (전체 생성 수, 사용된 수, 사용률 표시)
  • 쿠폰 코드 복사 버튼
  • 만료 임박 쿠폰 강조 표시 (3일 이내)

제약 조건

  • • Laravel 13.x 사용 (최신 버전)
  • • Blade 템플릿 엔진으로 뷰 작성 (React/Vue 사용 금지)
  • • Tailwind CSS로 스타일링
  • • SQLite 데이터베이스 사용
  • • CSRF 토큰 보호 적용
  • • 라우트는 web.php에 정의
  • • Eloquent ORM으로 데이터베이스 조작
  • • 폼 유효성 검사 포함 (할인율 0~100%, 유효기간 미래 날짜)

프롬프트 레시피

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

1
Step 1
mkdir coupon-generator-laravel && cd coupon-generator-laravel

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

Laravel 13.x 신규 프로젝트를 생성하고 기본 설정을 해주세요:
- `composer create-project laravel/laravel .` 명령으로 현재 폴더에 Laravel 설치
- `.env` 파일에서 DB_CONNECTION을 sqlite로 변경
- `database/database.sqlite` 파일 생성
- Tailwind CSS 설치 및 설정 (`npm install -D tailwindcss postcss autoprefixer && npx tailwindcss init -p`)
- `tailwind.config.js`에서 content 경로를 `["./resources/**/*.blade.php", "./resources/**/*.js"]`로 설정
- `resources/css/app.css`에 Tailwind 디렉티브 추가
- `resources/views/layouts/app.blade.php` 레이아웃 파일 생성 (Tailwind CSS 포함, 네비게이션 바 포함)

프로젝트 구조와 기본 설정이 완료되었는지 확인해주세요.

기대 결과: Laravel 13.x 프로젝트가 생성되고, SQLite 데이터베이스 연결이 설정되며, Tailwind CSS가 설치됩니다. 기본 레이아웃 파일이 생성되어 네비게이션(관리자/고객 페이지 링크)이 포함됩니다.

2
Step 2
쿠폰 데이터를 저장할 데이터베이스 구조를 만들어주세요:

1. `Coupon` 모델과 마이그레이션 생성: `php artisan make:model Coupon -m`

2. 마이그레이션 파일(`database/migrations/xxxx_create_coupons_table.php`)에 다음 컬럼 정의:
   - `name`: 쿠폰 이름 (string, 예: "신규 회원 할인")
   - `code`: 쿠폰 코드 (string, unique, 8자리 영문+숫자)
   - `discount_type`: 할인 타입 (enum: 'percentage', 'fixed', 기본값 'percentage')
   - `discount_value`: 할인 값 (decimal, 10,2 - 퍼센트면 0~100, 고정 금액이면 원 단위)
   - `expires_at`: 유효기간 (datetime)
   - `is_used`: 사용 여부 (boolean, 기본값 false)
   - `used_at`: 사용 일시 (datetime, nullable)
   - timestamps (created_at, updated_at)

3. `Coupon` 모델(`app/Models/Coupon.php`)에 fillable 속성 추가 및 캐스팅 설정:
   - `$fillable = ['name', 'code', 'discount_type', 'discount_value', 'expires_at', 'is_used', 'used_at'];`
   - `$casts = ['expires_at' => 'datetime', 'used_at' => 'datetime', 'is_used' => 'boolean'];`

4. 마이그레이션 실행: `php artisan migrate`

데이터베이스 테이블이 생성되었는지 확인해주세요.

기대 결과: coupons 테이블이 SQLite 데이터베이스에 생성되고, Coupon 모델이 준비됩니다. 마이그레이션이 성공적으로 실행됩니다.

3
Step 3
관리자용 쿠폰 생성 및 목록 페이지를 만들어주세요:

1. `CouponController` 생성: `php artisan make:controller CouponController`

2. `routes/web.php`에 라우트 추가:
   - `GET /admin/coupons` -> `CouponController@index` (쿠폰 목록)
   - `GET /admin/coupons/create` -> `CouponController@create` (쿠폰 생성 폼)
   - `POST /admin/coupons` -> `CouponController@store` (쿠폰 저장)

3. `CouponController`에 메서드 구현:
   - `index()`: 모든 쿠폰을 최신순으로 조회하여 `admin.coupons.index` 뷰로 전달
   - `create()`: `admin.coupons.create` 뷰 반환
   - `store(Request $request)`: 
     - 유효성 검사: name(필수), discount_type(필수, in:percentage,fixed), discount_value(필수, numeric, min:0), expires_at(필수, date, after:today)
     - 8자리 랜덤 쿠폰 코드 생성 (영문 대문자+숫자, 중복 체크)
     - Coupon 모델로 저장
     - 성공 메시지와 함께 목록 페이지로 리다이렉트

4. 뷰 파일 생성:
   - `resources/views/admin/coupons/index.blade.php`: 쿠폰 목록 테이블 (이름, 코드, 할인 정보, 유효기간, 상태, 생성일)
     - 상태 배지: 사용 가능(초록), 사용됨(회색), 만료(빨강)
     - 테이블은 Tailwind로 스타일링
   - `resources/views/admin/coupons/create.blade.php`: 쿠폰 생성 폼
     - 쿠폰 이름, 할인 타입(라디오 버튼), 할인 값, 유효기간(date input) 입력
     - CSRF 토큰 포함
     - 유효성 검사 에러 메시지 표시

5. 레이아웃 파일의 네비게이션에 "관리자" 링크 추가 (쿠폰 목록으로 이동)

Tailwind CSS로 깔끔한 카드 레이아웃과 폼 스타일을 적용해주세요.

기대 결과: 관리자가 쿠폰을 생성할 수 있는 폼과 생성된 쿠폰 목록을 볼 수 있는 페이지가 완성됩니다. 쿠폰 코드는 자동으로 생성되며, 유효성 검사가 작동합니다. 쿠폰 상태가 색상으로 구분되어 표시됩니다.

4
Step 4
고객용 쿠폰 조회 및 사용 페이지를 만들어주세요:

1. `routes/web.php`에 라우트 추가:
   - `GET /` -> 홈 페이지 (쿠폰 조회 페이지로 리다이렉트 또는 환영 메시지)
   - `GET /coupons/check` -> `CouponController@checkForm` (쿠폰 조회 폼)
   - `POST /coupons/check` -> `CouponController@check` (쿠폰 코드 검증 및 정보 표시)
   - `POST /coupons/{coupon}/use` -> `CouponController@use` (쿠폰 사용 처리)

2. `CouponController`에 메서드 추가:
   - `checkForm()`: `coupons.check` 뷰 반환
   - `check(Request $request)`:
     - 유효성 검사: code(필수, string)
     - 입력된 코드로 쿠폰 검색
     - 쿠폰이 없으면 "존재하지 않는 쿠폰입니다" 메시지
     - 쿠폰이 있으면:
       - 만료 여부 체크 (`expires_at < now()`)
       - 사용 여부 체크 (`is_used == true`)
       - 상태에 따라 메시지와 함께 쿠폰 정보를 `coupons.result` 뷰로 전달
   - `use(Coupon $coupon)`:
     - 쿠폰이 사용 가능한지 검증 (만료 안됨, 사용 안됨)
     - `is_used`를 true로, `used_at`을 현재 시간으로 업데이트
     - 성공 메시지와 함께 조회 페이지로 리다이렉트

3. 뷰 파일 생성:
   - `resources/views/coupons/check.blade.php`: 쿠폰 코드 입력 폼
     - 큰 입력 필드와 "조회하기" 버튼
     - CSRF 토큰 포함
   - `resources/views/coupons/result.blade.php`: 쿠폰 조회 결과
     - 쿠폰 정보 카드 (이름, 코드, 할인 정보, 유효기간)
     - 상태별 메시지:
       - 사용 가능: "사용하기" 버튼 표시 (POST /coupons/{id}/use)
       - 사용됨: "이미 사용된 쿠폰입니다" (회색 배지)
       - 만료: "유효기간이 만료된 쿠폰입니다" (빨간 배지)
     - 다시 조회하기 버튼

4. 레이아웃 파일의 네비게이션에 "쿠폰 조회" 링크 추가

Tailwind CSS로 중앙 정렬된 큰 입력 폼과 결과 카드를 디자인해주세요. 모바일에서도 잘 보이도록 반응형으로 만들어주세요.

기대 결과: 고객이 쿠폰 코드를 입력하여 할인 정보를 조회할 수 있고, 사용 가능한 쿠폰은 '사용하기' 버튼으로 사용 처리할 수 있습니다. 만료되거나 이미 사용된 쿠폰은 적절한 메시지가 표시됩니다. 깔끔하고 직관적인 UI가 완성됩니다.

제출된 작품 (0)

로그인 후 제출

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

댓글 (0)

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