동네 헬스장 운동 기록부 - 바이브코딩 레시피
입문 PHP Laravel AI: Claude

동네 헬스장 운동 기록부

리포지토리명 gym-workout-logger
조회수 85 1건 제출

문제 설명

동네 헬스장 운동 기록부

매일 헬스장에서 어떤 운동을 했는지, 세트와 무게는 얼마였는지 기록하고 조회할 수 있는 간단한 운동 일지 시스템입니다. Laravel 13.x + Blade 템플릿 + SQLite로 구축하며, Tailwind CSS로 깔끔한 UI를 제공합니다.

필수 기능

  • 운동 기록 추가: 날짜, 운동 종목(벤치프레스, 스쿼트 등), 세트 수, 무게(kg), 메모를 입력하여 저장
  • 운동 기록 목록 조회: 최신순으로 모든 운동 기록을 테이블 형태로 표시
  • 운동 기록 수정: 기존 기록의 세트 수, 무게, 메모를 수정 가능
  • 운동 기록 삭제: 잘못 입력한 기록을 삭제할 수 있음
  • 반응형 UI: 모바일에서도 편하게 사용할 수 있도록 Tailwind CSS 반응형 디자인 적용
  • SQLite 데이터베이스: 별도 DB 설치 없이 SQLite로 간편하게 데이터 관리

보너스 기능 (선택)

  • 운동 종목별로 필터링하여 조회
  • 최근 7일간 운동한 총 세트 수 통계 표시
  • 운동 종목 자동완성 기능 (자주 입력하는 종목 추천)
  • 날짜별로 그룹화하여 표시

학습 목표

  • Laravel 13.x의 라우팅, 컨트롤러, 모델, 마이그레이션 기본 이해
  • Blade 템플릿 문법과 컴포넌트 활용법 익히기
  • SQLite 데이터베이스 CRUD 작업 실습
  • Tailwind CSS를 활용한 빠른 UI 구성 경험

제약 조건

  • • Laravel 13.x 최신 버전 사용 필수
  • • Blade 템플릿 엔진 사용 (React/Vue 등 SPA 프레임워크 금지)
  • • SQLite 데이터베이스 사용 (MySQL/PostgreSQL 불필요)
  • • Tailwind CSS로 스타일링 (Bootstrap 사용 금지)
  • • CSRF 보호 활성화 (Laravel 기본 설정 유지)
  • • RESTful 라우팅 규칙 준수 (GET, POST, PUT/PATCH, DELETE)
  • • Blade 컴포넌트를 활용하여 레이아웃 재사용
  • • 유효성 검사 규칙 적용 (날짜, 세트 수, 무게 필수 입력)
  • • 모든 페이지는 반응형 디자인 적용

프롬프트 레시피

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

1
Step 1
mkdir gym-workout-logger && cd gym-workout-logger

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

Laravel 13.x 최신 버전으로 새 프로젝트를 생성하고, SQLite 데이터베이스를 사용하도록 설정해주세요.

요구사항:
1. `composer create-project laravel/laravel .` 명령으로 현재 폴더에 Laravel 프로젝트 생성
2. `.env` 파일에서 DB_CONNECTION을 sqlite로 변경
3. `database/database.sqlite` 파일 생성
4. Tailwind CSS 설치 및 설정 (`npm install -D tailwindcss postcss autoprefixer && npx tailwindcss init -p`)
5. `tailwind.config.js`에서 content 경로 설정: `content: ['./resources/**/*.blade.php', './resources/**/*.js']`
6. `resources/css/app.css`에 Tailwind 디렉티브 추가 (`@tailwind base; @tailwind components; @tailwind utilities;`)
7. `npm install && npm run dev` 실행하여 에셋 빌드
8. Laravel 서버 실행 (`php artisan serve`)

완료 후 브라우저에서 http://localhost:8000 접속 시 Laravel 기본 화면이 보여야 합니다.

기대 결과: Laravel 13.x 프로젝트가 생성되고, SQLite 데이터베이스 설정이 완료되며, Tailwind CSS가 통합된 상태입니다. 개발 서버가 실행되어 기본 Laravel 화면을 확인할 수 있습니다.

2
Step 2
운동 기록을 저장할 데이터베이스 테이블과 모델을 생성해주세요.

요구사항:
1. `php artisan make:model Workout -m` 명령으로 Workout 모델과 마이그레이션 파일 생성
2. 마이그레이션 파일 (`database/migrations/xxxx_create_workouts_table.php`)에 다음 컬럼 추가:
   - `date` (date, 운동 날짜)
   - `exercise` (string, 운동 종목명, 예: 벤치프레스, 스쿼트)
   - `sets` (integer, 세트 수)
   - `weight` (decimal(5,2), 무게 kg)
   - `memo` (text, nullable, 메모)
   - `timestamps` (created_at, updated_at 자동 추가)
3. Workout 모델 (`app/Models/Workout.php`)에 `$fillable` 속성 추가: `['date', 'exercise', 'sets', 'weight', 'memo']`
4. 모델에 날짜 캐스팅 추가: `protected $casts = ['date' => 'date'];`
5. `php artisan migrate` 실행하여 테이블 생성

완료 후 `database/database.sqlite` 파일에 workouts 테이블이 생성되어야 합니다.

기대 결과: workouts 테이블이 SQLite 데이터베이스에 생성되고, Workout 모델이 준비되어 CRUD 작업을 수행할 수 있는 상태입니다.

3
Step 3
운동 기록 목록을 보여주는 메인 페이지와 새 기록을 추가하는 폼을 만들어주세요.

요구사항:
1. `php artisan make:controller WorkoutController --resource` 명령으로 RESTful 컨트롤러 생성
2. `routes/web.php`에 리소스 라우트 추가: `Route::resource('workouts', WorkoutController::class);`
3. WorkoutController의 `index` 메서드: 모든 운동 기록을 최신순으로 조회하여 `workouts.index` 뷰로 전달
4. `resources/views/workouts/index.blade.php` 생성:
   - Tailwind CSS로 스타일링된 페이지 레이아웃
   - 상단에 "운동 기록 추가" 버튼 (workouts.create 라우트로 이동)
   - 운동 기록 목록을 테이블로 표시 (날짜, 운동 종목, 세트, 무게, 메모, 수정/삭제 버튼)
   - 기록이 없을 때 "아직 운동 기록이 없습니다" 메시지 표시
5. WorkoutController의 `create` 메서드: `workouts.create` 뷰 반환
6. `resources/views/workouts/create.blade.php` 생성:
   - 운동 기록 추가 폼 (날짜, 운동 종목, 세트, 무게, 메모 입력 필드)
   - Tailwind CSS로 깔끔한 폼 디자인
   - CSRF 토큰 포함 (`@csrf`)
   - 제출 버튼과 취소 버튼 (목록으로 돌아가기)
7. 레이아웃 컴포넌트 생성 (`resources/views/layouts/app.blade.php`):
   - HTML 기본 구조, Tailwind CSS 링크, 네비게이션 바
   - `@yield('content')` 섹션 포함
   - 모든 뷰에서 이 레이아웃 확장 (`@extends('layouts.app')`)

완료 후 브라우저에서 http://localhost:8000/workouts 접속 시 빈 목록 페이지가 보이고, "운동 기록 추가" 버튼 클릭 시 폼 페이지로 이동해야 합니다.

기대 결과: 운동 기록 목록 페이지와 추가 폼 페이지가 생성되고, Tailwind CSS로 스타일링된 UI가 표시됩니다. 아직 데이터 저장 기능은 구현되지 않았지만 페이지 간 이동이 가능합니다.

4
Step 4
운동 기록을 데이터베이스에 저장하고, 수정 및 삭제 기능을 구현해주세요.

요구사항:
1. WorkoutController의 `store` 메서드:
   - 요청 데이터 유효성 검사 (`$request->validate`)
     - date: 필수, 날짜 형식
     - exercise: 필수, 문자열, 최대 100자
     - sets: 필수, 정수, 최소 1
     - weight: 필수, 숫자, 최소 0
     - memo: 선택, 문자열
   - Workout 모델로 데이터 저장
   - 저장 후 목록 페이지로 리다이렉트 및 성공 메시지 세션 플래시
2. WorkoutController의 `edit` 메서드:
   - 특정 운동 기록 조회하여 `workouts.edit` 뷰로 전달
3. `resources/views/workouts/edit.blade.php` 생성:
   - 수정 폼 (create와 유사하지만 기존 데이터로 채워짐)
   - `@method('PUT')` 디렉티브 추가 (Laravel의 PUT 메서드 스푸핑)
   - CSRF 토큰 포함
4. WorkoutController의 `update` 메서드:
   - 유효성 검사 (store와 동일)
   - 기존 기록 업데이트
   - 목록 페이지로 리다이렉트 및 성공 메시지
5. WorkoutController의 `destroy` 메서드:
   - 특정 운동 기록 삭제
   - 목록 페이지로 리다이렉트 및 성공 메시지
6. `workouts.index` 뷰에서 수정/삭제 버튼 기능 연결:
   - 수정 버튼: `workouts.edit` 라우트로 링크
   - 삭제 버튼: DELETE 메서드로 폼 제출 (`@method('DELETE')`, 삭제 확인 알림 포함)
7. 세션 플래시 메시지 표시:
   - 레이아웃 또는 index 뷰에서 `@if(session('success'))` 블록 추가
   - Tailwind CSS로 스타일링된 성공 메시지 배너

완료 후 운동 기록을 추가, 수정, 삭제할 수 있고, 각 작업 후 성공 메시지가 표시되어야 합니다.

기대 결과: 운동 기록의 전체 CRUD 기능이 완성됩니다. 사용자는 운동 기록을 추가하고, 수정하고, 삭제할 수 있으며, 모든 작업 후 적절한 피드백 메시지를 받습니다. 데이터는 SQLite 데이터베이스에 영구 저장됩니다.

제출된 작품 (1)

로그인 후 제출

동네 헬스장 운동 기록부

리자
리자
· Claude Code

헬스장에서의 운동 루틴과 기록을 체계적으로 관리할 수 있는 웹 기반 운동 기록 애플리케이션

조회수 75 댓글수 0 추천수 0

댓글 (0)

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