@kood/claude-code 0.5.4 → 0.5.5
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.
- package/dist/index.js +6 -2
- package/package.json +1 -1
- package/templates/.claude/agents/document-writer.md +2 -2
- package/templates/.claude/skills/docs-creator/SKILL.md +2 -2
- package/templates/.claude/skills/docs-refactor/SKILL.md +1 -1
- package/templates/.claude/skills/plan/SKILL.md +15 -15
- package/templates/hono/CLAUDE.md +28 -28
- package/templates/hono/docs/architecture.md +24 -24
- package/templates/hono/docs/deployment/cloudflare.md +18 -18
- package/templates/hono/docs/deployment/docker.md +13 -13
- package/templates/hono/docs/deployment/index.md +19 -19
- package/templates/hono/docs/deployment/railway.md +32 -32
- package/templates/hono/docs/deployment/vercel.md +29 -29
- package/templates/hono/docs/guides/conventions.md +57 -57
- package/templates/hono/docs/guides/env-setup.md +47 -47
- package/templates/hono/docs/guides/getting-started.md +27 -27
- package/templates/hono/docs/library/hono/error-handling.md +11 -11
- package/templates/hono/docs/library/hono/index.md +4 -4
- package/templates/hono/docs/library/hono/middleware.md +18 -18
- package/templates/hono/docs/library/hono/rpc.md +7 -7
- package/templates/hono/docs/library/hono/validation.md +6 -6
- package/templates/hono/docs/library/prisma/cloudflare-d1.md +29 -29
- package/templates/hono/docs/library/prisma/config.md +16 -16
- package/templates/hono/docs/library/prisma/index.md +32 -32
- package/templates/hono/docs/library/t3-env/index.md +22 -22
- package/templates/hono/docs/library/zod/index.md +31 -31
- package/templates/nextjs/CLAUDE.md +54 -54
- package/templates/nextjs/docs/architecture.md +146 -146
- package/templates/nextjs/docs/design.md +183 -183
- package/templates/nextjs/docs/guides/conventions.md +86 -86
- package/templates/nextjs/docs/guides/getting-started.md +28 -28
- package/templates/nextjs/docs/guides/routes.md +32 -32
- package/templates/nextjs/docs/library/better-auth/index.md +70 -70
- package/templates/nextjs/docs/library/nextjs/app-router.md +43 -43
- package/templates/nextjs/docs/library/nextjs/caching.md +73 -73
- package/templates/nextjs/docs/library/nextjs/index.md +51 -51
- package/templates/nextjs/docs/library/nextjs/middleware.md +41 -41
- package/templates/nextjs/docs/library/nextjs/route-handlers.md +31 -31
- package/templates/nextjs/docs/library/nextjs/server-actions.md +34 -34
- package/templates/nextjs/docs/library/prisma/cloudflare-d1.md +20 -20
- package/templates/nextjs/docs/library/prisma/config.md +18 -18
- package/templates/nextjs/docs/library/prisma/crud.md +17 -17
- package/templates/nextjs/docs/library/prisma/index.md +18 -18
- package/templates/nextjs/docs/library/prisma/relations.md +16 -16
- package/templates/nextjs/docs/library/prisma/schema.md +23 -23
- package/templates/nextjs/docs/library/prisma/setup.md +6 -6
- package/templates/nextjs/docs/library/prisma/transactions.md +10 -10
- package/templates/nextjs/docs/library/tanstack-query/index.md +6 -6
- package/templates/nextjs/docs/library/tanstack-query/invalidation.md +20 -20
- package/templates/nextjs/docs/library/tanstack-query/optimistic-updates.md +4 -4
- package/templates/nextjs/docs/library/tanstack-query/use-mutation.md +15 -15
- package/templates/nextjs/docs/library/tanstack-query/use-query.md +22 -22
- package/templates/nextjs/docs/library/zod/complex-types.md +11 -11
- package/templates/nextjs/docs/library/zod/index.md +8 -8
- package/templates/nextjs/docs/library/zod/transforms.md +11 -11
- package/templates/nextjs/docs/library/zod/validation.md +9 -9
- package/templates/npx/CLAUDE.md +38 -38
- package/templates/npx/docs/library/commander/index.md +12 -12
- package/templates/npx/docs/library/fs-extra/index.md +9 -9
- package/templates/npx/docs/library/prompts/index.md +3 -3
- package/templates/npx/docs/references/patterns.md +12 -12
- package/templates/tanstack-start/CLAUDE.md +54 -54
- package/templates/tanstack-start/docs/architecture.md +128 -128
- package/templates/tanstack-start/docs/design.md +169 -169
- package/templates/tanstack-start/docs/guides/conventions.md +43 -43
- package/templates/tanstack-start/docs/guides/env-setup.md +35 -35
- package/templates/tanstack-start/docs/guides/getting-started.md +19 -19
- package/templates/tanstack-start/docs/guides/hooks.md +45 -45
- package/templates/tanstack-start/docs/guides/routes.md +54 -54
- package/templates/tanstack-start/docs/guides/services.md +45 -45
- package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +19 -19
- package/templates/tanstack-start/docs/library/prisma/config.md +16 -16
- package/templates/tanstack-start/docs/library/prisma/crud.md +17 -17
- package/templates/tanstack-start/docs/library/prisma/relations.md +16 -16
- package/templates/tanstack-start/docs/library/prisma/schema.md +23 -23
- package/templates/tanstack-start/docs/library/prisma/setup.md +6 -6
- package/templates/tanstack-start/docs/library/prisma/transactions.md +10 -10
- package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +19 -19
- package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +4 -4
- package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +14 -14
- package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +21 -21
- package/templates/tanstack-start/docs/library/tanstack-router/error-handling.md +9 -9
- package/templates/tanstack-start/docs/library/tanstack-router/hooks.md +11 -11
- package/templates/tanstack-start/docs/library/tanstack-router/navigation.md +17 -17
- package/templates/tanstack-start/docs/library/tanstack-router/route-context.md +5 -5
- package/templates/tanstack-start/docs/library/tanstack-router/search-params.md +10 -10
- package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +8 -8
- package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +9 -9
- package/templates/tanstack-start/docs/library/tanstack-start/routing.md +6 -6
- package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +18 -18
- package/templates/tanstack-start/docs/library/tanstack-start/setup.md +4 -4
- package/templates/tanstack-start/docs/library/zod/complex-types.md +11 -11
- package/templates/tanstack-start/docs/library/zod/transforms.md +11 -11
- package/templates/tanstack-start/docs/library/zod/validation.md +9 -9
package/dist/index.js
CHANGED
|
@@ -629,7 +629,11 @@ async function installExtras(templates, targetDir, flags, availability, force) {
|
|
|
629
629
|
// src/shared/gitignore-manager.ts
|
|
630
630
|
import fs6 from "fs-extra";
|
|
631
631
|
import path8 from "path";
|
|
632
|
-
var CLAUDE_GENERATED_FOLDERS = [
|
|
632
|
+
var CLAUDE_GENERATED_FOLDERS = [
|
|
633
|
+
".claude/plan/",
|
|
634
|
+
".claude/ralph/",
|
|
635
|
+
".claude/refactor/"
|
|
636
|
+
];
|
|
633
637
|
async function updateGitignore(targetDir) {
|
|
634
638
|
const gitignorePath = path8.join(targetDir, ".gitignore");
|
|
635
639
|
const sectionComment = "# Claude Code generated files";
|
|
@@ -835,7 +839,7 @@ var init = async (options) => {
|
|
|
835
839
|
|
|
836
840
|
// src/index.ts
|
|
837
841
|
var program = new Command();
|
|
838
|
-
program.name("claude-code").description("Claude Code documentation installer for projects").version("0.5.
|
|
842
|
+
program.name("claude-code").description("Claude Code documentation installer for projects").version("0.5.5");
|
|
839
843
|
program.option(
|
|
840
844
|
"-t, --template <names>",
|
|
841
845
|
"template names (comma-separated: tanstack-start,hono)"
|
package/package.json
CHANGED
|
@@ -52,7 +52,7 @@ model: haiku
|
|
|
52
52
|
|
|
53
53
|
<instructions>
|
|
54
54
|
@path/to/common-rules.md
|
|
55
|
-
|
|
55
|
+
@.claude/docs/library/[library]/index.md
|
|
56
56
|
</instructions>
|
|
57
57
|
|
|
58
58
|
<forbidden>
|
|
@@ -155,7 +155,7 @@ description: 한 줄 설명
|
|
|
155
155
|
|
|
156
156
|
<instructions>
|
|
157
157
|
@.claude/instructions/git-rules.md
|
|
158
|
-
|
|
158
|
+
@.claude/docs/library/tanstack-start/index.md
|
|
159
159
|
</instructions>
|
|
160
160
|
|
|
161
161
|
<forbidden>
|
|
@@ -151,7 +151,7 @@ Edit("docs/library/react-query/index.md", ...)
|
|
|
151
151
|
|
|
152
152
|
<instructions>
|
|
153
153
|
@path/to/common.md
|
|
154
|
-
|
|
154
|
+
@.claude/docs/library/[lib]/index.md
|
|
155
155
|
</instructions>
|
|
156
156
|
|
|
157
157
|
---
|
|
@@ -276,7 +276,7 @@ argument-hint: <인자>
|
|
|
276
276
|
|
|
277
277
|
<instructions>
|
|
278
278
|
@.claude/instructions/git-rules.md
|
|
279
|
-
|
|
279
|
+
@.claude/docs/library/tanstack-start/index.md
|
|
280
280
|
</instructions>
|
|
281
281
|
|
|
282
282
|
---
|
|
@@ -47,7 +47,7 @@ Task({
|
|
|
47
47
|
|
|
48
48
|
- 2-3개 옵션 제시 (장단점, 영향 범위)
|
|
49
49
|
- 추천안 및 근거
|
|
50
|
-
- 선택 후 `.claude/
|
|
50
|
+
- 선택 후 `.claude/plan/00.[기능명]/` 폴더에 여러 문서 자동 생성
|
|
51
51
|
- OVERVIEW.md, OPTIONS.md, IMPLEMENTATION.md, RISKS.md, REFERENCES.md
|
|
52
52
|
|
|
53
53
|
</when_to_use>
|
|
@@ -634,7 +634,7 @@ Task({
|
|
|
634
634
|
`
|
|
635
635
|
})
|
|
636
636
|
|
|
637
|
-
// → 각 모듈별 .claude/
|
|
637
|
+
// → 각 모듈별 .claude/plan/00.User_모듈/, 01.Payment_모듈/ 문서 생성
|
|
638
638
|
```
|
|
639
639
|
|
|
640
640
|
**예시 3: 실시간 기능 기술 조사 (조사 병렬)**
|
|
@@ -1047,10 +1047,10 @@ Task({
|
|
|
1047
1047
|
|
|
1048
1048
|
### 폴더 구조
|
|
1049
1049
|
|
|
1050
|
-
옵션 선택 후 `.claude/
|
|
1050
|
+
옵션 선택 후 `.claude/plan/00.[기능명]/` 폴더 생성:
|
|
1051
1051
|
|
|
1052
1052
|
```
|
|
1053
|
-
.claude/
|
|
1053
|
+
.claude/plan/00.실시간_알림/
|
|
1054
1054
|
├── OVERVIEW.md # 개요, 현재 상태, 선택된 옵션
|
|
1055
1055
|
├── OPTIONS.md # 모든 옵션 비교 분석 (장단점, 영향 범위)
|
|
1056
1056
|
├── IMPLEMENTATION.md # 구현 단계 상세 계획
|
|
@@ -1373,13 +1373,13 @@ Write({ file_path: "OPTIONS.md", ... }) // 대기...
|
|
|
1373
1373
|
|
|
1374
1374
|
## 계획 문서 병렬 생성
|
|
1375
1375
|
|
|
1376
|
-
사용자가 옵션을 선택하면 `.claude/
|
|
1376
|
+
사용자가 옵션을 선택하면 `.claude/plan/[기능명]-{timestamp}/` 폴더에 여러 문서를 **병렬로** 생성합니다.
|
|
1377
1377
|
|
|
1378
1378
|
### 병렬 생성 워크플로우
|
|
1379
1379
|
|
|
1380
1380
|
```text
|
|
1381
|
-
1. 넘버링 결정: ls .claude/
|
|
1382
|
-
2. 폴더 생성: .claude/
|
|
1381
|
+
1. 넘버링 결정: ls .claude/plan/ → 다음 번호 자동 부여
|
|
1382
|
+
2. 폴더 생성: .claude/plan/00.[기능명]/
|
|
1383
1383
|
3. document-writer 에이전트 5개 병렬 호출
|
|
1384
1384
|
- OVERVIEW.md (haiku)
|
|
1385
1385
|
- OPTIONS.md (haiku)
|
|
@@ -1397,10 +1397,10 @@ Write({ file_path: "OPTIONS.md", ... }) // 대기...
|
|
|
1397
1397
|
```typescript
|
|
1398
1398
|
// 옵션 선택 후 실행
|
|
1399
1399
|
// 1. 넘버링 결정
|
|
1400
|
-
Bash("ls .claude/
|
|
1400
|
+
Bash("ls .claude/plan/ | grep -E '^[0-9]+' | wc -l")
|
|
1401
1401
|
const nextNumber = "00" // 결과 기반 계산
|
|
1402
1402
|
const projectName = "실시간_알림"
|
|
1403
|
-
const basePath = `.claude/
|
|
1403
|
+
const basePath = `.claude/plan/${nextNumber}.${projectName}`
|
|
1404
1404
|
|
|
1405
1405
|
// 2. 폴더 생성
|
|
1406
1406
|
Bash(`mkdir -p ${basePath}`)
|
|
@@ -1498,7 +1498,7 @@ Task({
|
|
|
1498
1498
|
// 문서 생성 완료 후 즉시 실행
|
|
1499
1499
|
Skill({
|
|
1500
1500
|
skill: 'execute',
|
|
1501
|
-
args: `@.claude/
|
|
1501
|
+
args: `@.claude/plan/${nextNumber}.${projectName}/IMPLEMENTATION.md 1단계부터 구현`
|
|
1502
1502
|
})
|
|
1503
1503
|
```
|
|
1504
1504
|
|
|
@@ -1546,7 +1546,7 @@ Skill({
|
|
|
1546
1546
|
3. planner agent 프로세스:
|
|
1547
1547
|
- 인터뷰: 요구사항, 제약사항, 리스크 허용도 파악
|
|
1548
1548
|
- 코드베이스 조사: Explore agent로 현재 구조 분석
|
|
1549
|
-
- 계획 생성: .claude/
|
|
1549
|
+
- 계획 생성: .claude/plan/00.세션_인증/
|
|
1550
1550
|
- 5개 문서 병렬 생성 (OVERVIEW, OPTIONS, IMPLEMENTATION, RISKS, REFERENCES)
|
|
1551
1551
|
- 사용자 확인 후 핸드오프
|
|
1552
1552
|
|
|
@@ -1584,7 +1584,7 @@ Skill({
|
|
|
1584
1584
|
4. 사용자 선택: 1
|
|
1585
1585
|
|
|
1586
1586
|
5. document-writer 에이전트 5개 병렬 호출로 문서 생성
|
|
1587
|
-
- .claude/
|
|
1587
|
+
- .claude/plan/00.실시간_알림/
|
|
1588
1588
|
├── OVERVIEW.md
|
|
1589
1589
|
├── OPTIONS.md
|
|
1590
1590
|
├── IMPLEMENTATION.md
|
|
@@ -1621,7 +1621,7 @@ Skill({
|
|
|
1621
1621
|
- 단점: 테스트 필요
|
|
1622
1622
|
|
|
1623
1623
|
4. 사용자 선택 → document-writer 에이전트 병렬 호출로 계획 문서 생성
|
|
1624
|
-
- .claude/
|
|
1624
|
+
- .claude/plan/00.타입스크립트_전환/
|
|
1625
1625
|
|
|
1626
1626
|
5. 구현 자동 시작:
|
|
1627
1627
|
Skill({ skill: 'execute' })
|
|
@@ -1644,9 +1644,9 @@ Skill({
|
|
|
1644
1644
|
✅ 옵션 최소 2개, 권장 3개
|
|
1645
1645
|
✅ 각 옵션에 장단점 명시
|
|
1646
1646
|
✅ 영향 범위 및 예상 작업량 제시
|
|
1647
|
-
✅ 넘버링 자동 결정 (ls .claude/
|
|
1647
|
+
✅ 넘버링 자동 결정 (ls .claude/plan/)
|
|
1648
1648
|
✅ document-writer 에이전트 병렬 호출로 문서 생성
|
|
1649
|
-
✅ .claude/
|
|
1649
|
+
✅ .claude/plan/00.[기능명]/ 폴더 구조 사용 (한글 설명)
|
|
1650
1650
|
```
|
|
1651
1651
|
|
|
1652
1652
|
절대 금지:
|
package/templates/hono/CLAUDE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CLAUDE.md - Hono
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Web Standards 기반 초경량 프레임워크
|
|
4
4
|
|
|
5
5
|
<instructions>
|
|
6
6
|
@../../commands/git.md
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
|
|
16
16
|
<forbidden>
|
|
17
17
|
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
| **Git** | `Generated with Claude Code`, `🤖`, `Co-Authored-By:`,
|
|
21
|
-
| **Prisma** |
|
|
22
|
-
| **API** |
|
|
23
|
-
|
|
|
18
|
+
| 분류 | 금지 |
|
|
19
|
+
|------|------|
|
|
20
|
+
| **Git** | `Generated with Claude Code`, `🤖`, `Co-Authored-By:`, 여러 줄, 이모지 |
|
|
21
|
+
| **Prisma** | `db push/migrate/generate` 자동 실행, schema 임의 변경 |
|
|
22
|
+
| **API** | handler 내 수동 검증/인증, 일반 Error throw |
|
|
23
|
+
| **검색** | grep, rg, find |
|
|
24
24
|
|
|
25
25
|
</forbidden>
|
|
26
26
|
|
|
@@ -28,15 +28,15 @@
|
|
|
28
28
|
|
|
29
29
|
<required>
|
|
30
30
|
|
|
31
|
-
|
|
|
32
|
-
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
| 3+
|
|
38
|
-
| Validation | zValidator, HTTPException
|
|
39
|
-
|
|
|
31
|
+
| 작업 | 필수 |
|
|
32
|
+
|------|------|
|
|
33
|
+
| 작업 전 | 관련 docs 읽기 (API→hono, DB→prisma) |
|
|
34
|
+
| 문서 검색 | serena mcp (문서 인덱싱/검색, context 길이 최적화) |
|
|
35
|
+
| 코드 검색 | ast-grep |
|
|
36
|
+
| 복잡한 작업 | Sequential Thinking MCP |
|
|
37
|
+
| 3+ 파일 수정 | gemini-review |
|
|
38
|
+
| Validation | zValidator, HTTPException 에러 처리 |
|
|
39
|
+
| 코드 작성 | UTF-8, 코드 묶음별 한글 주석, Prisma Multi-File 모든 요소 주석 |
|
|
40
40
|
|
|
41
41
|
</required>
|
|
42
42
|
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
|
|
45
45
|
<tech_stack>
|
|
46
46
|
|
|
47
|
-
|
|
|
48
|
-
|
|
49
|
-
| Hono |
|
|
47
|
+
| 기술 | 버전 | 주의 |
|
|
48
|
+
|------|------|------|
|
|
49
|
+
| Hono | 최신 | - |
|
|
50
50
|
| TypeScript | 5.x | strict |
|
|
51
|
-
| Prisma | **7.x** | `prisma-client`, output
|
|
51
|
+
| Prisma | **7.x** | `prisma-client`, output 필수 |
|
|
52
52
|
| Zod | **4.x** | `z.email()`, `z.url()` |
|
|
53
53
|
|
|
54
54
|
</tech_stack>
|
|
@@ -70,23 +70,23 @@ src/
|
|
|
70
70
|
└── types/
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
공통 로직 → `src/services/`, 라우트별 로직 → 각 route 파일
|
|
74
74
|
</structure>
|
|
75
75
|
|
|
76
76
|
---
|
|
77
77
|
|
|
78
78
|
<conventions>
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
TypeScript: const
|
|
82
|
-
Import
|
|
80
|
+
파일명: kebab-case
|
|
81
|
+
TypeScript: const 선언, 명시적 return type, interface(객체)/type(유니온), any→unknown
|
|
82
|
+
Import 순서: 외부 → 내부 → 상대경로 → type
|
|
83
83
|
|
|
84
84
|
Prisma Multi-File:
|
|
85
85
|
```
|
|
86
86
|
prisma/schema/
|
|
87
87
|
├── +base.prisma # datasource, generator
|
|
88
|
-
├── +enum.prisma #
|
|
89
|
-
└── [model].prisma #
|
|
88
|
+
├── +enum.prisma # enum
|
|
89
|
+
└── [model].prisma # 모델별 (한글 주석!)
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
</conventions>
|
|
@@ -96,7 +96,7 @@ prisma/schema/
|
|
|
96
96
|
<quick_patterns>
|
|
97
97
|
|
|
98
98
|
```typescript
|
|
99
|
-
// App +
|
|
99
|
+
// App + 에러 핸들러
|
|
100
100
|
import { Hono } from 'hono'
|
|
101
101
|
import { HTTPException } from 'hono/http-exception'
|
|
102
102
|
|
|
@@ -145,7 +145,7 @@ export const authMiddleware = createMiddleware(async (c, next) => {
|
|
|
145
145
|
await next()
|
|
146
146
|
})
|
|
147
147
|
|
|
148
|
-
//
|
|
148
|
+
// 사용
|
|
149
149
|
app.use('/api/*', authMiddleware)
|
|
150
150
|
```
|
|
151
151
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Hono
|
|
1
|
+
# Hono 서버 아키텍처
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 레이어 기반 아키텍처
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 시스템 개요
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
Client → Middleware → Routes → Validation → Services → Database
|
|
@@ -12,21 +12,21 @@ Client → Middleware → Routes → Validation → Services → Database
|
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## 프로젝트 구조
|
|
16
16
|
|
|
17
17
|
```
|
|
18
18
|
src/
|
|
19
19
|
├── index.ts # Entry point
|
|
20
|
-
├── routes/ #
|
|
21
|
-
├── middleware/ #
|
|
22
|
-
├── validators/ # Zod
|
|
23
|
-
├── services/ #
|
|
20
|
+
├── routes/ # 라우트 모듈
|
|
21
|
+
├── middleware/ # 커스텀 미들웨어
|
|
22
|
+
├── validators/ # Zod 스키마
|
|
23
|
+
├── services/ # 비즈니스 로직
|
|
24
24
|
│ └── user/
|
|
25
|
-
│ ├── queries.ts #
|
|
26
|
-
│ └── mutations.ts #
|
|
25
|
+
│ ├── queries.ts # 조회
|
|
26
|
+
│ └── mutations.ts # 생성/수정/삭제
|
|
27
27
|
├── database/ # Prisma Client
|
|
28
|
-
├── types/ #
|
|
29
|
-
└── lib/ #
|
|
28
|
+
├── types/ # 타입 정의
|
|
29
|
+
└── lib/ # 유틸리티
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
---
|
|
@@ -227,8 +227,8 @@ const data = await res.json()
|
|
|
227
227
|
|
|
228
228
|
## Tech Stack
|
|
229
229
|
|
|
230
|
-
|
|
|
231
|
-
|
|
230
|
+
| 분류 | 기술 | 버전 |
|
|
231
|
+
|------|------|------|
|
|
232
232
|
| Framework | Hono | latest |
|
|
233
233
|
| Validation | Zod | **4.x** |
|
|
234
234
|
| ORM | Prisma | **7.x** |
|
|
@@ -236,20 +236,20 @@ const data = await res.json()
|
|
|
236
236
|
|
|
237
237
|
---
|
|
238
238
|
|
|
239
|
-
##
|
|
239
|
+
## 패턴 요약
|
|
240
240
|
|
|
241
|
-
|
|
|
242
|
-
|
|
243
|
-
| Routes | HTTP
|
|
244
|
-
| Middleware |
|
|
245
|
-
| Validators |
|
|
246
|
-
| Services |
|
|
247
|
-
| Database |
|
|
241
|
+
| 레이어 | 역할 | 파일 |
|
|
242
|
+
|--------|------|------|
|
|
243
|
+
| Routes | HTTP 라우팅 | `routes/*.ts` |
|
|
244
|
+
| Middleware | 요청/응답 처리 | `middleware/*.ts` |
|
|
245
|
+
| Validators | 입력 검증 | `validators/*.ts` |
|
|
246
|
+
| Services | 비즈니스 로직 | `services/*/*.ts` |
|
|
247
|
+
| Database | 데이터 액세스 | `database/prisma.ts` |
|
|
248
248
|
|
|
249
249
|
---
|
|
250
250
|
|
|
251
|
-
##
|
|
251
|
+
## 관련 문서
|
|
252
252
|
|
|
253
253
|
- [Hono](../library/hono/index.md)
|
|
254
254
|
- [Prisma](../library/prisma/index.md)
|
|
255
|
-
- [Cloudflare
|
|
255
|
+
- [Cloudflare 배포](../deployment/cloudflare.md)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Nitro - Cloudflare
|
|
1
|
+
# Nitro - Cloudflare 배포
|
|
2
2
|
|
|
3
|
-
> Cloudflare Workers/Pages Edge
|
|
3
|
+
> Cloudflare Workers/Pages Edge 배포
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## Workers
|
|
7
|
+
## Workers 설정
|
|
8
8
|
|
|
9
9
|
```typescript
|
|
10
10
|
// nitro.config.ts
|
|
@@ -22,7 +22,7 @@ export default defineNitroConfig({
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
## Pages
|
|
25
|
+
## Pages 설정
|
|
26
26
|
|
|
27
27
|
```typescript
|
|
28
28
|
// nitro.config.ts
|
|
@@ -65,7 +65,7 @@ bucket_name = "my-bucket"
|
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
68
|
-
##
|
|
68
|
+
## 배포
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
71
|
wrangler login
|
|
@@ -78,7 +78,7 @@ wrangler pages deploy .output/public
|
|
|
78
78
|
|
|
79
79
|
---
|
|
80
80
|
|
|
81
|
-
##
|
|
81
|
+
## Bindings 사용
|
|
82
82
|
|
|
83
83
|
### D1
|
|
84
84
|
|
|
@@ -137,7 +137,7 @@ app.get("/download/:name", async (c) => {
|
|
|
137
137
|
|
|
138
138
|
---
|
|
139
139
|
|
|
140
|
-
##
|
|
140
|
+
## 시크릿
|
|
141
141
|
|
|
142
142
|
```bash
|
|
143
143
|
wrangler secret put API_SECRET
|
|
@@ -146,7 +146,7 @@ wrangler secret list
|
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
149
|
-
## D1
|
|
149
|
+
## D1 마이그레이션
|
|
150
150
|
|
|
151
151
|
```bash
|
|
152
152
|
wrangler d1 migrations create my-database create_users
|
|
@@ -191,21 +191,21 @@ jobs:
|
|
|
191
191
|
|
|
192
192
|
---
|
|
193
193
|
|
|
194
|
-
##
|
|
194
|
+
## 문제 해결
|
|
195
195
|
|
|
196
|
-
|
|
|
197
|
-
|
|
198
|
-
| Worker size limit |
|
|
199
|
-
| D1 not found |
|
|
200
|
-
| Node.js API
|
|
196
|
+
| 문제 | 해결 |
|
|
197
|
+
|------|------|
|
|
198
|
+
| Worker size limit | externals 설정, minify |
|
|
199
|
+
| D1 not found | wrangler.toml 바인딩 확인 |
|
|
200
|
+
| Node.js API 오류 | `nodejs_compat` 플래그 |
|
|
201
201
|
|
|
202
202
|
```bash
|
|
203
|
-
wrangler tail #
|
|
204
|
-
wrangler deploy --dry-run #
|
|
203
|
+
wrangler tail # 실시간 로그
|
|
204
|
+
wrangler deploy --dry-run # 검증
|
|
205
205
|
```
|
|
206
206
|
|
|
207
207
|
---
|
|
208
208
|
|
|
209
|
-
##
|
|
209
|
+
## 관련 문서
|
|
210
210
|
|
|
211
|
-
- [
|
|
211
|
+
- [배포 가이드](./index.md)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Nitro - Docker
|
|
1
|
+
# Nitro - Docker 배포
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 컨테이너 배포
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -63,13 +63,13 @@ docs/
|
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
66
|
-
##
|
|
66
|
+
## 빌드 및 실행
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
69
|
docker build -t my-hono-app .
|
|
70
70
|
docker run -p 3000:3000 my-hono-app
|
|
71
71
|
|
|
72
|
-
#
|
|
72
|
+
# 환경 변수
|
|
73
73
|
docker run -p 3000:3000 \
|
|
74
74
|
-e DATABASE_URL="postgresql://..." \
|
|
75
75
|
my-hono-app
|
|
@@ -119,7 +119,7 @@ docker compose down
|
|
|
119
119
|
|
|
120
120
|
---
|
|
121
121
|
|
|
122
|
-
##
|
|
122
|
+
## 개발용
|
|
123
123
|
|
|
124
124
|
```yaml
|
|
125
125
|
# docker-compose.dev.yml
|
|
@@ -178,13 +178,13 @@ jobs:
|
|
|
178
178
|
|
|
179
179
|
---
|
|
180
180
|
|
|
181
|
-
##
|
|
181
|
+
## 문제 해결
|
|
182
182
|
|
|
183
|
-
|
|
|
184
|
-
|
|
185
|
-
|
|
|
186
|
-
|
|
|
187
|
-
|
|
|
183
|
+
| 문제 | 해결 |
|
|
184
|
+
|------|------|
|
|
185
|
+
| 포트 연결 실패 | `HOST=0.0.0.0` 설정 |
|
|
186
|
+
| 권한 오류 | 비-root 사용자 |
|
|
187
|
+
| 메모리 부족 | 멀티스테이지 빌드 |
|
|
188
188
|
|
|
189
189
|
```bash
|
|
190
190
|
docker exec -it hono-app sh
|
|
@@ -194,6 +194,6 @@ docker stats hono-app
|
|
|
194
194
|
|
|
195
195
|
---
|
|
196
196
|
|
|
197
|
-
##
|
|
197
|
+
## 관련 문서
|
|
198
198
|
|
|
199
|
-
- [
|
|
199
|
+
- [배포 가이드](./index.md)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Nitro v3
|
|
1
|
+
# Nitro v3 배포 가이드
|
|
2
2
|
|
|
3
|
-
> Hono + Nitro
|
|
3
|
+
> Hono + Nitro 배포
|
|
4
4
|
|
|
5
5
|
@docker.md
|
|
6
6
|
@railway.md
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## 설치
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
15
|
npm install nitro@3
|
|
@@ -17,7 +17,7 @@ npm install nitro@3
|
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## 기본 설정
|
|
21
21
|
|
|
22
22
|
```typescript
|
|
23
23
|
// nitro.config.ts
|
|
@@ -32,7 +32,7 @@ export default defineNitroConfig({
|
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
|
-
##
|
|
35
|
+
## 엔트리포인트
|
|
36
36
|
|
|
37
37
|
```typescript
|
|
38
38
|
// src/server.ts
|
|
@@ -51,19 +51,19 @@ export default app;
|
|
|
51
51
|
## CLI
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
|
-
npx nitro dev #
|
|
55
|
-
npx nitro build #
|
|
56
|
-
npx nitro preview #
|
|
57
|
-
node .output/server/index.mjs #
|
|
54
|
+
npx nitro dev # 개발 서버
|
|
55
|
+
npx nitro build # 빌드
|
|
56
|
+
npx nitro preview # 프리뷰
|
|
57
|
+
node .output/server/index.mjs # 실행
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
|
|
62
|
-
## Preset
|
|
62
|
+
## Preset 선택
|
|
63
63
|
|
|
64
|
-
| Preset |
|
|
65
|
-
|
|
66
|
-
| `node` | Node.js
|
|
64
|
+
| Preset | 용도 |
|
|
65
|
+
|--------|------|
|
|
66
|
+
| `node` | Node.js 서버, Docker |
|
|
67
67
|
| `cloudflare_module` | Cloudflare Workers |
|
|
68
68
|
| `cloudflare_pages` | Cloudflare Pages |
|
|
69
69
|
| `vercel` | Vercel Functions |
|
|
@@ -71,7 +71,7 @@ node .output/server/index.mjs # Run
|
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
74
|
-
##
|
|
74
|
+
## 환경 변수
|
|
75
75
|
|
|
76
76
|
```typescript
|
|
77
77
|
// nitro.config.ts
|
|
@@ -97,22 +97,22 @@ app.get("/config", (c) => {
|
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
100
|
-
##
|
|
100
|
+
## 프로젝트 구조
|
|
101
101
|
|
|
102
102
|
```
|
|
103
|
-
|
|
103
|
+
프로젝트/
|
|
104
104
|
├── nitro.config.ts
|
|
105
105
|
├── src/
|
|
106
|
-
│ ├── server.ts # Hono
|
|
106
|
+
│ ├── server.ts # Hono 앱
|
|
107
107
|
│ ├── routes/
|
|
108
108
|
│ └── lib/
|
|
109
|
-
├── .output/ #
|
|
109
|
+
├── .output/ # 빌드 결과물
|
|
110
110
|
└── package.json
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
---
|
|
114
114
|
|
|
115
|
-
##
|
|
115
|
+
## 관련 문서
|
|
116
116
|
|
|
117
117
|
- [Docker](./docker.md)
|
|
118
118
|
- [Railway](./railway.md)
|