@kood/claude-code 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/index.js +12 -3
  2. package/package.json +2 -2
  3. package/templates/hono/CLAUDE.md +20 -2
  4. package/templates/hono/docs/architecture/architecture.md +909 -0
  5. package/templates/hono/docs/deployment/cloudflare.md +537 -190
  6. package/templates/hono/docs/deployment/docker.md +517 -0
  7. package/templates/hono/docs/deployment/index.md +181 -213
  8. package/templates/hono/docs/deployment/railway.md +416 -0
  9. package/templates/hono/docs/deployment/vercel.md +572 -0
  10. package/templates/hono/docs/git/git.md +285 -0
  11. package/templates/hono/docs/library/ai-sdk/index.md +427 -0
  12. package/templates/hono/docs/library/ai-sdk/openrouter.md +479 -0
  13. package/templates/hono/docs/library/ai-sdk/providers.md +468 -0
  14. package/templates/hono/docs/library/ai-sdk/streaming.md +447 -0
  15. package/templates/hono/docs/library/ai-sdk/structured-output.md +493 -0
  16. package/templates/hono/docs/library/ai-sdk/tools.md +513 -0
  17. package/templates/hono/docs/library/hono/env-setup.md +458 -0
  18. package/templates/hono/docs/library/hono/index.md +1 -0
  19. package/templates/hono/docs/library/pino/index.md +437 -0
  20. package/templates/hono/docs/library/prisma/cloudflare-d1.md +503 -0
  21. package/templates/hono/docs/library/prisma/config.md +362 -0
  22. package/templates/hono/docs/library/prisma/index.md +86 -13
  23. package/templates/hono/docs/skills/gemini-review/SKILL.md +116 -116
  24. package/templates/hono/docs/skills/gemini-review/references/checklists.md +125 -125
  25. package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +191 -191
  26. package/templates/npx/CLAUDE.md +309 -0
  27. package/templates/npx/docs/git/git.md +307 -0
  28. package/templates/npx/docs/library/commander/index.md +164 -0
  29. package/templates/npx/docs/library/fs-extra/index.md +171 -0
  30. package/templates/npx/docs/library/prompts/index.md +253 -0
  31. package/templates/npx/docs/mcp/index.md +60 -0
  32. package/templates/npx/docs/skills/gemini-review/SKILL.md +220 -0
  33. package/templates/npx/docs/skills/gemini-review/references/checklists.md +134 -0
  34. package/templates/npx/docs/skills/gemini-review/references/prompt-templates.md +301 -0
  35. package/templates/tanstack-start/CLAUDE.md +43 -5
  36. package/templates/tanstack-start/docs/architecture/architecture.md +134 -4
  37. package/templates/tanstack-start/docs/deployment/cloudflare.md +234 -51
  38. package/templates/tanstack-start/docs/deployment/index.md +322 -32
  39. package/templates/tanstack-start/docs/deployment/nitro.md +201 -20
  40. package/templates/tanstack-start/docs/deployment/railway.md +305 -153
  41. package/templates/tanstack-start/docs/deployment/vercel.md +353 -78
  42. package/templates/tanstack-start/docs/git/{index.md → git.md} +81 -7
  43. package/templates/tanstack-start/docs/guides/best-practices.md +203 -1
  44. package/templates/tanstack-start/docs/guides/env-setup.md +450 -0
  45. package/templates/tanstack-start/docs/library/ai-sdk/hooks.md +472 -0
  46. package/templates/tanstack-start/docs/library/ai-sdk/index.md +264 -0
  47. package/templates/tanstack-start/docs/library/ai-sdk/openrouter.md +371 -0
  48. package/templates/tanstack-start/docs/library/ai-sdk/providers.md +403 -0
  49. package/templates/tanstack-start/docs/library/ai-sdk/streaming.md +320 -0
  50. package/templates/tanstack-start/docs/library/ai-sdk/structured-output.md +454 -0
  51. package/templates/tanstack-start/docs/library/ai-sdk/tools.md +473 -0
  52. package/templates/tanstack-start/docs/library/pino/index.md +320 -0
  53. package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +404 -0
  54. package/templates/tanstack-start/docs/library/prisma/config.md +377 -0
  55. package/templates/tanstack-start/docs/library/prisma/index.md +3 -1
  56. package/templates/tanstack-start/docs/library/prisma/schema.md +123 -25
  57. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +80 -2
  58. package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +116 -116
  59. package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +138 -144
  60. package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +186 -187
  61. package/templates/hono/docs/git/index.md +0 -180
@@ -0,0 +1,517 @@
1
+ # Nitro v3 - Docker 배포
2
+
3
+ > **상위 문서**: [배포 가이드](./index.md)
4
+
5
+ Docker를 사용하여 Hono + Nitro 애플리케이션을 컨테이너로 배포합니다.
6
+
7
+ ---
8
+
9
+ ## 🚀 Quick Reference (복사용)
10
+
11
+ ```dockerfile
12
+ # Dockerfile
13
+ FROM node:20-alpine AS base
14
+
15
+ FROM base AS deps
16
+ WORKDIR /app
17
+ COPY package.json pnpm-lock.yaml ./
18
+ RUN corepack enable pnpm && pnpm install --frozen-lockfile
19
+
20
+ FROM base AS builder
21
+ WORKDIR /app
22
+ COPY --from=deps /app/node_modules ./node_modules
23
+ COPY . .
24
+ RUN corepack enable pnpm && pnpm run build
25
+
26
+ FROM base AS runner
27
+ WORKDIR /app
28
+ RUN addgroup --system --gid 1001 nodejs && \
29
+ adduser --system --uid 1001 hono
30
+ COPY --from=builder --chown=hono:nodejs /app/.output ./.output
31
+ USER hono
32
+ EXPOSE 3000
33
+ ENV PORT=3000 NODE_ENV=production
34
+ CMD ["node", ".output/server/index.mjs"]
35
+ ```
36
+
37
+ ```bash
38
+ # 빌드 및 실행
39
+ docker build -t my-hono-app .
40
+ docker run -p 3000:3000 my-hono-app
41
+ ```
42
+
43
+ ---
44
+
45
+ ## Nitro 설정
46
+
47
+ ### nitro.config.ts
48
+
49
+ ```typescript
50
+ // nitro.config.ts
51
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
52
+ // Docker 배포용 Nitro 설정
53
+ // Node.js 서버로 빌드됩니다
54
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
55
+ import { defineNitroConfig } from "nitro/config";
56
+
57
+ export default defineNitroConfig({
58
+ // Node.js 서버 preset
59
+ preset: "node",
60
+
61
+ // 호환성 날짜
62
+ compatibilityDate: "2024-09-19",
63
+
64
+ // 소스 디렉토리
65
+ srcDir: "src",
66
+
67
+ // 빌드 출력
68
+ output: {
69
+ dir: ".output",
70
+ },
71
+
72
+ // Node.js 설정
73
+ node: {
74
+ // 압축 활성화
75
+ compress: true,
76
+ },
77
+ });
78
+ ```
79
+
80
+ ---
81
+
82
+ ## Dockerfile (상세)
83
+
84
+ ### 멀티스테이지 빌드
85
+
86
+ ```dockerfile
87
+ # Dockerfile
88
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
89
+ # Hono + Nitro 멀티스테이지 Docker 빌드
90
+ # 최적화된 프로덕션 이미지 생성
91
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
92
+
93
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
94
+ # Stage 1: 베이스 이미지
95
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
96
+ FROM node:20-alpine AS base
97
+
98
+ # libc6-compat: 일부 네이티브 모듈 호환성을 위해 필요
99
+ RUN apk add --no-cache libc6-compat
100
+
101
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
102
+ # Stage 2: 의존성 설치
103
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
104
+ FROM base AS deps
105
+ WORKDIR /app
106
+
107
+ # 패키지 매니저 파일 복사
108
+ COPY package.json pnpm-lock.yaml ./
109
+
110
+ # pnpm 활성화 및 의존성 설치
111
+ RUN corepack enable pnpm && \
112
+ pnpm install --frozen-lockfile --prod=false
113
+
114
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
115
+ # Stage 3: 빌드
116
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
117
+ FROM base AS builder
118
+ WORKDIR /app
119
+
120
+ # 의존성 복사
121
+ COPY --from=deps /app/node_modules ./node_modules
122
+
123
+ # 소스 코드 복사
124
+ COPY . .
125
+
126
+ # Nitro 빌드
127
+ RUN corepack enable pnpm && \
128
+ pnpm run build && \
129
+ pnpm store prune
130
+
131
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
132
+ # Stage 4: 프로덕션 러너
133
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
134
+ FROM base AS runner
135
+ WORKDIR /app
136
+
137
+ # 보안: 비-root 사용자 생성
138
+ RUN addgroup --system --gid 1001 nodejs && \
139
+ adduser --system --uid 1001 hono
140
+
141
+ # 빌드 결과물만 복사 (최소화된 이미지)
142
+ COPY --from=builder --chown=hono:nodejs /app/.output ./.output
143
+
144
+ # 비-root 사용자로 전환
145
+ USER hono
146
+
147
+ # 포트 설정
148
+ EXPOSE 3000
149
+
150
+ # 환경 변수
151
+ ENV PORT=3000
152
+ ENV NODE_ENV=production
153
+ ENV HOST=0.0.0.0
154
+
155
+ # 헬스체크
156
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
157
+ CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
158
+
159
+ # 서버 실행
160
+ CMD ["node", ".output/server/index.mjs"]
161
+ ```
162
+
163
+ ---
164
+
165
+ ## .dockerignore
166
+
167
+ ```dockerignore
168
+ # .dockerignore
169
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
170
+ # Docker 빌드 시 제외할 파일
171
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
172
+
173
+ # 의존성
174
+ node_modules/
175
+
176
+ # 빌드 결과물
177
+ .output/
178
+ dist/
179
+
180
+ # 환경 파일
181
+ .env
182
+ .env.*
183
+ !.env.example
184
+
185
+ # Git
186
+ .git/
187
+ .gitignore
188
+
189
+ # IDE
190
+ .vscode/
191
+ .idea/
192
+
193
+ # 테스트
194
+ coverage/
195
+ *.test.ts
196
+ *.spec.ts
197
+ __tests__/
198
+
199
+ # 문서
200
+ *.md
201
+ docs/
202
+
203
+ # Docker
204
+ Dockerfile*
205
+ docker-compose*.yml
206
+ .dockerignore
207
+
208
+ # 기타
209
+ .DS_Store
210
+ *.log
211
+ tmp/
212
+ ```
213
+
214
+ ---
215
+
216
+ ## Docker Compose
217
+
218
+ ### docker-compose.yml
219
+
220
+ ```yaml
221
+ # docker-compose.yml
222
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
223
+ # Hono + Nitro 개발/프로덕션 환경 구성
224
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
225
+
226
+ services:
227
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
228
+ # Hono 애플리케이션
229
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
230
+ app:
231
+ build:
232
+ context: .
233
+ dockerfile: Dockerfile
234
+ ports:
235
+ - "3000:3000"
236
+ environment:
237
+ - NODE_ENV=production
238
+ - DATABASE_URL=postgresql://postgres:password@db:5432/mydb
239
+ depends_on:
240
+ db:
241
+ condition: service_healthy
242
+ restart: unless-stopped
243
+ healthcheck:
244
+ test: ["CMD", "wget", "--spider", "http://localhost:3000/health"]
245
+ interval: 30s
246
+ timeout: 10s
247
+ retries: 3
248
+
249
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
250
+ # PostgreSQL 데이터베이스
251
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
252
+ db:
253
+ image: postgres:16-alpine
254
+ environment:
255
+ - POSTGRES_USER=postgres
256
+ - POSTGRES_PASSWORD=password
257
+ - POSTGRES_DB=mydb
258
+ volumes:
259
+ - postgres_data:/var/lib/postgresql/data
260
+ healthcheck:
261
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
262
+ interval: 10s
263
+ timeout: 5s
264
+ retries: 5
265
+
266
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
267
+ # Redis 캐시 (선택적)
268
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
269
+ redis:
270
+ image: redis:7-alpine
271
+ ports:
272
+ - "6379:6379"
273
+ volumes:
274
+ - redis_data:/data
275
+ command: redis-server --appendonly yes
276
+
277
+ volumes:
278
+ postgres_data:
279
+ redis_data:
280
+ ```
281
+
282
+ ### 개발용 docker-compose
283
+
284
+ ```yaml
285
+ # docker-compose.dev.yml
286
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
287
+ # 개발 환경 전용 구성
288
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
289
+
290
+ services:
291
+ app:
292
+ build:
293
+ context: .
294
+ dockerfile: Dockerfile.dev
295
+ ports:
296
+ - "3000:3000"
297
+ volumes:
298
+ # 소스 코드 마운트 (Hot Reload)
299
+ - ./src:/app/src
300
+ - ./nitro.config.ts:/app/nitro.config.ts
301
+ environment:
302
+ - NODE_ENV=development
303
+ - DATABASE_URL=postgresql://postgres:password@db:5432/mydb
304
+ depends_on:
305
+ - db
306
+
307
+ db:
308
+ image: postgres:16-alpine
309
+ environment:
310
+ - POSTGRES_USER=postgres
311
+ - POSTGRES_PASSWORD=password
312
+ - POSTGRES_DB=mydb
313
+ ports:
314
+ - "5432:5432"
315
+ volumes:
316
+ - postgres_data:/var/lib/postgresql/data
317
+
318
+ volumes:
319
+ postgres_data:
320
+ ```
321
+
322
+ ### 개발용 Dockerfile
323
+
324
+ ```dockerfile
325
+ # Dockerfile.dev
326
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
327
+ # 개발 환경용 Dockerfile
328
+ # Hot Reload 지원
329
+ # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
330
+
331
+ FROM node:20-alpine
332
+
333
+ WORKDIR /app
334
+
335
+ # 패키지 파일 복사
336
+ COPY package.json pnpm-lock.yaml ./
337
+
338
+ # pnpm 설치 및 의존성 설치
339
+ RUN corepack enable pnpm && pnpm install
340
+
341
+ # 소스 코드는 볼륨으로 마운트됨
342
+
343
+ EXPOSE 3000
344
+
345
+ # 개발 서버 실행
346
+ CMD ["pnpm", "run", "dev"]
347
+ ```
348
+
349
+ ---
350
+
351
+ ## 빌드 및 실행 명령어
352
+
353
+ ### 기본 명령어
354
+
355
+ ```bash
356
+ # 이미지 빌드
357
+ docker build -t my-hono-app .
358
+
359
+ # 컨테이너 실행
360
+ docker run -p 3000:3000 my-hono-app
361
+
362
+ # 환경 변수와 함께 실행
363
+ docker run -p 3000:3000 \
364
+ -e DATABASE_URL="postgresql://user:pass@host:5432/db" \
365
+ -e API_SECRET="my-secret" \
366
+ my-hono-app
367
+
368
+ # 백그라운드 실행
369
+ docker run -d --name hono-app -p 3000:3000 my-hono-app
370
+ ```
371
+
372
+ ### Docker Compose 명령어
373
+
374
+ ```bash
375
+ # 프로덕션 시작
376
+ docker compose up -d
377
+
378
+ # 개발 환경 시작
379
+ docker compose -f docker-compose.dev.yml up
380
+
381
+ # 로그 확인
382
+ docker compose logs -f app
383
+
384
+ # 컨테이너 재빌드
385
+ docker compose up -d --build
386
+
387
+ # 종료
388
+ docker compose down
389
+
390
+ # 볼륨 포함 종료 (데이터 삭제)
391
+ docker compose down -v
392
+ ```
393
+
394
+ ---
395
+
396
+ ## CI/CD 통합
397
+
398
+ ### GitHub Actions
399
+
400
+ ```yaml
401
+ # .github/workflows/docker.yml
402
+ name: Docker Build & Push
403
+
404
+ on:
405
+ push:
406
+ branches: [main]
407
+ pull_request:
408
+ branches: [main]
409
+
410
+ jobs:
411
+ build:
412
+ runs-on: ubuntu-latest
413
+
414
+ steps:
415
+ - uses: actions/checkout@v4
416
+
417
+ - name: Set up Docker Buildx
418
+ uses: docker/setup-buildx-action@v3
419
+
420
+ - name: Login to Container Registry
421
+ uses: docker/login-action@v3
422
+ with:
423
+ registry: ghcr.io
424
+ username: ${{ github.actor }}
425
+ password: ${{ secrets.GITHUB_TOKEN }}
426
+
427
+ - name: Build and Push
428
+ uses: docker/build-push-action@v5
429
+ with:
430
+ context: .
431
+ push: ${{ github.event_name != 'pull_request' }}
432
+ tags: |
433
+ ghcr.io/${{ github.repository }}:latest
434
+ ghcr.io/${{ github.repository }}:${{ github.sha }}
435
+ cache-from: type=gha
436
+ cache-to: type=gha,mode=max
437
+ ```
438
+
439
+ ---
440
+
441
+ ## 최적화 팁
442
+
443
+ ### 이미지 크기 최소화
444
+
445
+ ```dockerfile
446
+ # Alpine 기반 이미지 사용
447
+ FROM node:20-alpine
448
+
449
+ # 불필요한 파일 제외 (.dockerignore 활용)
450
+
451
+ # 프로덕션 의존성만 설치
452
+ RUN pnpm install --prod
453
+
454
+ # 빌드 결과물만 최종 이미지에 포함
455
+ COPY --from=builder /app/.output ./.output
456
+ ```
457
+
458
+ ### 빌드 캐시 활용
459
+
460
+ ```dockerfile
461
+ # 의존성 파일 먼저 복사 (캐시 활용)
462
+ COPY package.json pnpm-lock.yaml ./
463
+ RUN pnpm install
464
+
465
+ # 소스 코드는 나중에 복사
466
+ COPY . .
467
+ RUN pnpm build
468
+ ```
469
+
470
+ ### 보안 강화
471
+
472
+ ```dockerfile
473
+ # 비-root 사용자 사용
474
+ RUN adduser --system --uid 1001 hono
475
+ USER hono
476
+
477
+ # 읽기 전용 파일 시스템
478
+ # docker run --read-only my-hono-app
479
+
480
+ # 취약점 스캔
481
+ # docker scan my-hono-app
482
+ ```
483
+
484
+ ---
485
+
486
+ ## 문제 해결
487
+
488
+ ### 일반적인 문제
489
+
490
+ | 문제 | 원인 | 해결 |
491
+ |------|------|------|
492
+ | 포트 연결 실패 | HOST=0.0.0.0 미설정 | `ENV HOST=0.0.0.0` 추가 |
493
+ | 빌드 실패 | node_modules 누락 | .dockerignore 확인 |
494
+ | 권한 오류 | root 사용자 문제 | 비-root 사용자 사용 |
495
+ | 메모리 부족 | 이미지 크기 과다 | 멀티스테이지 빌드 사용 |
496
+
497
+ ### 디버깅
498
+
499
+ ```bash
500
+ # 컨테이너 쉘 접속
501
+ docker exec -it hono-app sh
502
+
503
+ # 로그 확인
504
+ docker logs -f hono-app
505
+
506
+ # 리소스 사용량 확인
507
+ docker stats hono-app
508
+ ```
509
+
510
+ ---
511
+
512
+ ## 관련 문서
513
+
514
+ - [배포 가이드 개요](./index.md)
515
+ - [Railway 배포](./railway.md)
516
+ - [Vercel 배포](./vercel.md)
517
+ - [Cloudflare 배포](./cloudflare.md)