Update .gitignore to include common build outputs, node dependencies, logs, and local environment files; remove CLAUDE.md as it is no longer needed.

This commit is contained in:
hyeonggil
2026-04-11 19:44:26 +09:00
parent 0bcedac8fb
commit fb2fc81d8a
13 changed files with 6910 additions and 70 deletions

26
.gitignore vendored
View File

@@ -1,2 +1,24 @@
.cursor/
.claude/
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
# Node dependencies
node_modules
# Logs
logs
*.log
# Misc
.DS_Store
.fleet
.idea
# Local env files
.env
.env.*
!.env.example

View File

@@ -1,68 +0,0 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is a minimal git learning repository used for practicing git commands and workflows. The parent directory (`D:/00.study/`) is a learning repository containing multiple framework projects (Vue, Nuxt, Next.js, React).
## Repository Structure
- **main branch**: Contains only CLAUDE.md
- **feature/study branch**: Contains CLAUDE.md and bug1.mg (버그수정)
- **Remote**: origin/main configured
## 커밋 메시지 규칙 (생성/입력 룰)
커밋 메시지를 **생성하거나 입력할 때** 아래 규칙을 따른다.
### 형식
- `feat: 내용` — 새 기능
- `fix: 내용` — 버그 수정
- `refactor: 내용` — 리팩터링(동작 변경 없음)
- `test: 내용` — 테스트 추가/수정
- `docs: 내용` — 문서만 변경
- `chore: 내용` — 빌드, 설정, 기타 잡일
### 작성 원칙
- `내용`**반드시 한글로** 작성한다.
- 제목은 **한 줄**로만 작성하고, 마침표·불필요한 기호는 넣지 않는다.
- **변경 의도**가 드러나게 간결하게 쓴다.
### 예시
- `feat: 회원 가입 폼 유효성 검사 추가`
- `fix: 로그인 시 세션 만료 처리 오류 수정`
- `refactor: 결제 모듈 상태 관리 로직 분리`
- `test: 로그인 서비스 단위 테스트 케이스 보강`
- `docs: CLAUDE.md 커밋 메시지 입력 룰 보강`
- `chore: 의존성 버전 업데이트`
## Common Git Commands
```bash
# View all branches
git branch -a
# Switch branches
git checkout feature/study
git checkout main
# View commit history
git log --all --oneline --graph
# View file changes in commits
git log --all --name-status --oneline
# Show file content from specific commit
git show <commit-hash>:<filename>
# List files in current HEAD
git ls-tree -r HEAD --name-only
```
## Repository Context
This is a practice repository for learning git workflows. The minimal structure allows focus on git operations rather than application code.

75
README.md Normal file
View File

@@ -0,0 +1,75 @@
# Nuxt Minimal Starter
Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
## Setup
Make sure to install dependencies:
```bash
# npm
npm install
# pnpm
pnpm install
# yarn
yarn install
# bun
bun install
```
## Development Server
Start the development server on `http://localhost:3000`:
```bash
# npm
npm run dev
# pnpm
pnpm dev
# yarn
yarn dev
# bun
bun run dev
```
## Production
Build the application for production:
```bash
# npm
npm run build
# pnpm
pnpm build
# yarn
yarn build
# bun
bun run build
```
Locally preview production build:
```bash
# npm
npm run preview
# pnpm
pnpm preview
# yarn
yarn preview
# bun
bun run preview
```
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.

6
app/app.vue Normal file
View File

@@ -0,0 +1,6 @@
<template>
<div>
<NuxtRouteAnnouncer />
<NuxtPage />
</div>
</template>

View File

@@ -0,0 +1,87 @@
<script setup lang="ts">
// 카운터 컴포넌트 props 정의
interface Props {
initialCount?: number
min?: number
max?: number
label?: string
}
const props = withDefaults(defineProps<Props>(), {
initialCount: 0,
min: 0,
max: 100,
label: '카운트',
})
const count = ref<number>(props.initialCount)
// 증가 (최대값 초과 방지)
function increment() {
if (count.value < props.max) {
count.value++
}
}
// 감소 (최소값 미만 방지)
function decrement() {
if (count.value > props.min) {
count.value--
}
}
// 초기화
function reset() {
count.value = props.initialCount
}
const isMin = computed(() => count.value <= props.min)
const isMax = computed(() => count.value >= props.max)
</script>
<template>
<div class="flex flex-col items-center gap-4 rounded-2xl border border-gray-200 bg-white p-6 shadow-sm sm:p-8">
<!-- 레이블 -->
<p class="text-sm font-medium text-gray-500">{{ props.label }}</p>
<!-- 카운트 표시 -->
<span class="text-5xl font-bold tabular-nums text-gray-800 sm:text-6xl">
{{ count }}
</span>
<!-- 버튼 영역 -->
<div class="flex items-center gap-3">
<!-- 감소 버튼 -->
<button
:disabled="isMin"
class="flex h-10 w-10 items-center justify-center rounded-full border border-gray-300 text-xl font-bold text-gray-600 transition hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-40"
aria-label="감소"
@click="decrement"
>
</button>
<!-- 초기화 버튼 -->
<button
class="rounded-lg border border-gray-200 px-3 py-1.5 text-sm text-gray-500 transition hover:bg-gray-100"
aria-label="초기화"
@click="reset"
>
초기화
</button>
<!-- 증가 버튼 -->
<button
:disabled="isMax"
class="flex h-10 w-10 items-center justify-center rounded-full border border-gray-300 text-xl font-bold text-gray-600 transition hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-40"
aria-label="증가"
@click="increment"
>
+
</button>
</div>
<!-- 범위 표시 -->
<p class="text-xs text-gray-400">범위: {{ props.min }} ~ {{ props.max }}</p>
</div>
</template>

47
app/pages/counter.vue Normal file
View File

@@ -0,0 +1,47 @@
<script setup lang="ts">
// 페이지 메타 설정
useHead({
title: '카운터 데모',
})
</script>
<template>
<main class="min-h-screen bg-gray-50 px-4 py-12">
<div class="mx-auto max-w-2xl">
<!-- 페이지 헤더 -->
<div class="mb-10 text-center">
<h1 class="text-3xl font-bold text-gray-900 sm:text-4xl">카운터 데모</h1>
<p class="mt-2 text-gray-500">다양한 설정의 카운터 컴포넌트 예시입니다.</p>
</div>
<!-- 카운터 카드 목록 -->
<div class="flex flex-col gap-6">
<!-- 기본 카운터 -->
<section class="rounded-2xl bg-white p-6 shadow-sm">
<h2 class="mb-4 text-sm font-semibold uppercase tracking-widest text-gray-400">기본</h2>
<Counter label="기본 카운터" />
</section>
<!-- 수량 선택 -->
<section class="rounded-2xl bg-white p-6 shadow-sm">
<h2 class="mb-4 text-sm font-semibold uppercase tracking-widest text-gray-400">수량 선택</h2>
<Counter
label="장바구니 수량"
:initial-count="1"
:min="1"
:max="10"
/>
</section>
<!-- 점수판 -->
<section class="rounded-2xl bg-white p-6 shadow-sm">
<h2 class="mb-4 text-sm font-semibold uppercase tracking-widest text-gray-400">점수판</h2>
<div class="flex flex-col gap-4 sm:flex-row sm:justify-center">
<Counter label="팀 A" :min="0" :max="99" />
<Counter label="팀 B" :min="0" :max="99" />
</div>
</section>
</div>
</div>
</main>
</template>

7
app/pages/index.vue Normal file
View File

@@ -0,0 +1,7 @@
<template>
<div></div>
</template>
<script setup></script>
<style lang="scss" scoped></style>

5
nuxt.config.ts Normal file
View File

@@ -0,0 +1,5 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
compatibilityDate: "2025-07-15",
devtools: { enabled: true },
});

17
package.json Normal file
View File

@@ -0,0 +1,17 @@
{
"name": "claude-code-mastery",
"type": "module",
"private": true,
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
},
"dependencies": {
"nuxt": "^4.3.1",
"vue": "^3.5.28",
"vue-router": "^4.6.4"
}
}

6622
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

2
public/robots.txt Normal file
View File

@@ -0,0 +1,2 @@
User-Agent: *
Disallow:

18
tsconfig.json Normal file
View File

@@ -0,0 +1,18 @@
{
// https://nuxt.com/docs/guide/concepts/typescript
"files": [],
"references": [
{
"path": "./.nuxt/tsconfig.app.json"
},
{
"path": "./.nuxt/tsconfig.server.json"
},
{
"path": "./.nuxt/tsconfig.shared.json"
},
{
"path": "./.nuxt/tsconfig.node.json"
}
]
}