@kood/claude-code 0.1.0

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 (78) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +297 -0
  3. package/package.json +47 -0
  4. package/templates/hono/CLAUDE.md +376 -0
  5. package/templates/hono/docs/deployment/cloudflare.md +328 -0
  6. package/templates/hono/docs/deployment/index.md +291 -0
  7. package/templates/hono/docs/git/index.md +180 -0
  8. package/templates/hono/docs/library/hono/error-handling.md +400 -0
  9. package/templates/hono/docs/library/hono/index.md +241 -0
  10. package/templates/hono/docs/library/hono/middleware.md +334 -0
  11. package/templates/hono/docs/library/hono/rpc.md +454 -0
  12. package/templates/hono/docs/library/hono/validation.md +328 -0
  13. package/templates/hono/docs/library/prisma/index.md +427 -0
  14. package/templates/hono/docs/library/zod/index.md +413 -0
  15. package/templates/hono/docs/mcp/context7.md +106 -0
  16. package/templates/hono/docs/mcp/index.md +94 -0
  17. package/templates/hono/docs/mcp/sequential-thinking.md +101 -0
  18. package/templates/hono/docs/mcp/sgrep.md +105 -0
  19. package/templates/hono/docs/skills/gemini-review/SKILL.md +220 -0
  20. package/templates/hono/docs/skills/gemini-review/references/checklists.md +136 -0
  21. package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +303 -0
  22. package/templates/tanstack-start/CLAUDE.md +279 -0
  23. package/templates/tanstack-start/docs/architecture/architecture.md +547 -0
  24. package/templates/tanstack-start/docs/deployment/cloudflare.md +346 -0
  25. package/templates/tanstack-start/docs/deployment/index.md +102 -0
  26. package/templates/tanstack-start/docs/deployment/nitro.md +211 -0
  27. package/templates/tanstack-start/docs/deployment/railway.md +364 -0
  28. package/templates/tanstack-start/docs/deployment/vercel.md +287 -0
  29. package/templates/tanstack-start/docs/design/accessibility.md +433 -0
  30. package/templates/tanstack-start/docs/design/color.md +235 -0
  31. package/templates/tanstack-start/docs/design/components.md +409 -0
  32. package/templates/tanstack-start/docs/design/index.md +107 -0
  33. package/templates/tanstack-start/docs/design/safe-area.md +317 -0
  34. package/templates/tanstack-start/docs/design/spacing.md +341 -0
  35. package/templates/tanstack-start/docs/design/tailwind-setup.md +470 -0
  36. package/templates/tanstack-start/docs/design/typography.md +324 -0
  37. package/templates/tanstack-start/docs/git/index.md +203 -0
  38. package/templates/tanstack-start/docs/guides/best-practices.md +753 -0
  39. package/templates/tanstack-start/docs/guides/getting-started.md +304 -0
  40. package/templates/tanstack-start/docs/guides/husky-lint-staged.md +303 -0
  41. package/templates/tanstack-start/docs/guides/prettier.md +189 -0
  42. package/templates/tanstack-start/docs/guides/project-templates.md +710 -0
  43. package/templates/tanstack-start/docs/library/better-auth/2fa.md +136 -0
  44. package/templates/tanstack-start/docs/library/better-auth/advanced.md +138 -0
  45. package/templates/tanstack-start/docs/library/better-auth/index.md +83 -0
  46. package/templates/tanstack-start/docs/library/better-auth/plugins.md +111 -0
  47. package/templates/tanstack-start/docs/library/better-auth/session.md +127 -0
  48. package/templates/tanstack-start/docs/library/better-auth/setup.md +123 -0
  49. package/templates/tanstack-start/docs/library/prisma/crud.md +218 -0
  50. package/templates/tanstack-start/docs/library/prisma/index.md +165 -0
  51. package/templates/tanstack-start/docs/library/prisma/relations.md +191 -0
  52. package/templates/tanstack-start/docs/library/prisma/schema.md +177 -0
  53. package/templates/tanstack-start/docs/library/prisma/setup.md +156 -0
  54. package/templates/tanstack-start/docs/library/prisma/transactions.md +140 -0
  55. package/templates/tanstack-start/docs/library/tanstack-query/index.md +146 -0
  56. package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +146 -0
  57. package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +196 -0
  58. package/templates/tanstack-start/docs/library/tanstack-query/setup.md +110 -0
  59. package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +170 -0
  60. package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +173 -0
  61. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +171 -0
  62. package/templates/tanstack-start/docs/library/tanstack-start/index.md +114 -0
  63. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +142 -0
  64. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +163 -0
  65. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +128 -0
  66. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +85 -0
  67. package/templates/tanstack-start/docs/library/zod/basic-types.md +186 -0
  68. package/templates/tanstack-start/docs/library/zod/complex-types.md +204 -0
  69. package/templates/tanstack-start/docs/library/zod/index.md +186 -0
  70. package/templates/tanstack-start/docs/library/zod/transforms.md +174 -0
  71. package/templates/tanstack-start/docs/library/zod/validation.md +208 -0
  72. package/templates/tanstack-start/docs/mcp/context7.md +204 -0
  73. package/templates/tanstack-start/docs/mcp/index.md +116 -0
  74. package/templates/tanstack-start/docs/mcp/sequential-thinking.md +180 -0
  75. package/templates/tanstack-start/docs/mcp/sgrep.md +174 -0
  76. package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +220 -0
  77. package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +150 -0
  78. package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +293 -0
@@ -0,0 +1,364 @@
1
+ # Railway 배포
2
+
3
+ > **상위 문서**: [배포](./index.md)
4
+
5
+ Railway는 Node.js 서버를 간편하게 배포할 수 있는 플랫폼입니다.
6
+
7
+ ## 빠른 시작
8
+
9
+ ### 1. Nitro 설정
10
+
11
+ ```typescript
12
+ // nitro.config.ts
13
+ import { defineNitroConfig } from 'nitro/config'
14
+
15
+ export default defineNitroConfig({
16
+ preset: 'node-server',
17
+ })
18
+ ```
19
+
20
+ ### 2. Vite 설정
21
+
22
+ ```typescript
23
+ // vite.config.ts
24
+ import { defineConfig } from 'vite'
25
+ import react from '@vitejs/plugin-react'
26
+ import { tanstackStart } from '@tanstack/react-start/plugin/vite'
27
+ import { nitro } from 'nitro/vite'
28
+
29
+ export default defineConfig({
30
+ plugins: [
31
+ tanstackStart(),
32
+ nitro(),
33
+ react(),
34
+ ],
35
+ })
36
+ ```
37
+
38
+ ### 3. 빌드 스크립트
39
+
40
+ ```json
41
+ // package.json
42
+ {
43
+ "scripts": {
44
+ "build": "vite build",
45
+ "start": "node .output/server/index.mjs"
46
+ }
47
+ }
48
+ ```
49
+
50
+ ## Railway 설정
51
+
52
+ ### railway.json
53
+
54
+ ```json
55
+ {
56
+ "$schema": "https://railway.app/railway.schema.json",
57
+ "build": {
58
+ "builder": "NIXPACKS",
59
+ "buildCommand": "yarn install && yarn build"
60
+ },
61
+ "deploy": {
62
+ "startCommand": "node .output/server/index.mjs",
63
+ "healthcheckPath": "/",
64
+ "healthcheckTimeout": 100,
65
+ "restartPolicyType": "ON_FAILURE",
66
+ "restartPolicyMaxRetries": 10
67
+ }
68
+ }
69
+ ```
70
+
71
+ ### nixpacks.toml (선택사항)
72
+
73
+ ```toml
74
+ [phases.setup]
75
+ nixPkgs = ["nodejs_20"]
76
+
77
+ [phases.install]
78
+ cmds = ["yarn install"]
79
+
80
+ [phases.build]
81
+ cmds = ["yarn build"]
82
+
83
+ [start]
84
+ cmd = "node .output/server/index.mjs"
85
+ ```
86
+
87
+ ## 환경변수
88
+
89
+ ### Railway 대시보드에서 설정
90
+
91
+ 1. Railway 대시보드 → 프로젝트 선택
92
+ 2. Variables 탭 클릭
93
+ 3. 환경변수 추가:
94
+ - `NODE_ENV=production`
95
+ - `DATABASE_URL=...`
96
+ - `API_SECRET=...`
97
+
98
+ ### Railway CLI 사용
99
+
100
+ ```bash
101
+ # Railway CLI 설치
102
+ npm install -g @railway/cli
103
+
104
+ # 로그인
105
+ railway login
106
+
107
+ # 환경변수 설정
108
+ railway variables set DATABASE_URL=postgresql://...
109
+ railway variables set API_SECRET=your-secret
110
+
111
+ # 환경변수 확인
112
+ railway variables
113
+ ```
114
+
115
+ ## 데이터베이스 연결
116
+
117
+ ### PostgreSQL
118
+
119
+ Railway에서 PostgreSQL 서비스 추가 후:
120
+
121
+ ```bash
122
+ # 자동 생성된 환경변수 사용
123
+ DATABASE_URL=${{ Postgres.DATABASE_URL }}
124
+ ```
125
+
126
+ ### Prisma와 함께 사용
127
+
128
+ ```typescript
129
+ // server/db.ts
130
+ import { PrismaClient } from './generated/prisma'
131
+
132
+ const prisma = new PrismaClient({
133
+ datasources: {
134
+ db: {
135
+ url: process.env.DATABASE_URL,
136
+ },
137
+ },
138
+ })
139
+
140
+ export default prisma
141
+ ```
142
+
143
+ ## 포트 설정
144
+
145
+ Railway는 `PORT` 환경변수를 자동 제공합니다:
146
+
147
+ ```typescript
148
+ // nitro.config.ts
149
+ import { defineNitroConfig } from 'nitro/config'
150
+
151
+ export default defineNitroConfig({
152
+ preset: 'node-server',
153
+ // Railway의 PORT 환경변수 사용
154
+ })
155
+ ```
156
+
157
+ 서버 코드에서:
158
+
159
+ ```typescript
160
+ // .output/server/index.mjs (자동 생성됨)
161
+ // Nitro가 자동으로 PORT 환경변수를 사용
162
+ ```
163
+
164
+ ## 배포 방법
165
+
166
+ ### GitHub 연동 (권장)
167
+
168
+ 1. Railway 대시보드에서 "New Project" 클릭
169
+ 2. "Deploy from GitHub repo" 선택
170
+ 3. 저장소 선택 및 연결
171
+ 4. 자동 배포 설정 완료
172
+
173
+ ### Railway CLI
174
+
175
+ ```bash
176
+ # 프로젝트 초기화
177
+ railway init
178
+
179
+ # 배포
180
+ railway up
181
+
182
+ # 로그 확인
183
+ railway logs
184
+ ```
185
+
186
+ ## 커스텀 도메인
187
+
188
+ ### Railway 대시보드에서
189
+
190
+ 1. 프로젝트 Settings 탭
191
+ 2. Domains 섹션
192
+ 3. "Generate Domain" 또는 "Custom Domain" 추가
193
+
194
+ ### CLI 사용
195
+
196
+ ```bash
197
+ # 도메인 추가
198
+ railway domain add example.com
199
+
200
+ # 도메인 확인
201
+ railway domain
202
+ ```
203
+
204
+ ## 헬스체크
205
+
206
+ ### 기본 헬스체크 엔드포인트
207
+
208
+ ```typescript
209
+ // server/api/health.ts
210
+ import { defineHandler } from 'nitro/h3'
211
+
212
+ export default defineHandler(() => {
213
+ return { status: 'ok', timestamp: new Date().toISOString() }
214
+ })
215
+ ```
216
+
217
+ ### railway.json 헬스체크 설정
218
+
219
+ ```json
220
+ {
221
+ "deploy": {
222
+ "healthcheckPath": "/api/health",
223
+ "healthcheckTimeout": 100
224
+ }
225
+ }
226
+ ```
227
+
228
+ ## 스케일링
229
+
230
+ ### 수평 스케일링
231
+
232
+ Railway 대시보드에서:
233
+ 1. Settings → Scaling
234
+ 2. 인스턴스 수 조정
235
+
236
+ ### 리소스 설정
237
+
238
+ ```json
239
+ // railway.json
240
+ {
241
+ "deploy": {
242
+ "numReplicas": 2
243
+ }
244
+ }
245
+ ```
246
+
247
+ ## 로깅 및 모니터링
248
+
249
+ ### 로그 확인
250
+
251
+ ```bash
252
+ # 실시간 로그
253
+ railway logs -f
254
+
255
+ # 최근 로그
256
+ railway logs --lines 100
257
+ ```
258
+
259
+ ### 메트릭 확인
260
+
261
+ Railway 대시보드에서:
262
+ - CPU 사용량
263
+ - 메모리 사용량
264
+ - 네트워크 트래픽
265
+ - 요청 수
266
+
267
+ ## CI/CD 설정
268
+
269
+ ### GitHub Actions
270
+
271
+ ```yaml
272
+ name: Deploy to Railway
273
+
274
+ on:
275
+ push:
276
+ branches: [main]
277
+
278
+ jobs:
279
+ deploy:
280
+ runs-on: ubuntu-latest
281
+ steps:
282
+ - uses: actions/checkout@v4
283
+
284
+ - name: Install Railway CLI
285
+ run: npm install -g @railway/cli
286
+
287
+ - name: Deploy
288
+ run: railway up
289
+ env:
290
+ RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}
291
+ ```
292
+
293
+ ### Railway 토큰 생성
294
+
295
+ 1. Railway 대시보드 → Account Settings
296
+ 2. Tokens 섹션에서 새 토큰 생성
297
+ 3. GitHub Secrets에 `RAILWAY_TOKEN`으로 저장
298
+
299
+ ## 트러블슈팅
300
+
301
+ ### 빌드 실패
302
+
303
+ ```bash
304
+ # 로컬에서 빌드 테스트
305
+ NITRO_PRESET=node-server yarn build
306
+
307
+ # 시작 명령 테스트
308
+ node .output/server/index.mjs
309
+ ```
310
+
311
+ ### 포트 바인딩 오류
312
+
313
+ Railway는 `PORT` 환경변수를 자동 설정합니다. 하드코딩된 포트가 없는지 확인:
314
+
315
+ ```typescript
316
+ // ❌ 잘못된 예
317
+ const port = 3000
318
+
319
+ // ✅ 올바른 예
320
+ const port = process.env.PORT || 3000
321
+ ```
322
+
323
+ ### 메모리 초과
324
+
325
+ ```json
326
+ // railway.json
327
+ {
328
+ "deploy": {
329
+ "restartPolicyType": "ON_FAILURE",
330
+ "restartPolicyMaxRetries": 10
331
+ }
332
+ }
333
+ ```
334
+
335
+ Node.js 메모리 제한 설정:
336
+
337
+ ```json
338
+ // package.json
339
+ {
340
+ "scripts": {
341
+ "start": "node --max-old-space-size=512 .output/server/index.mjs"
342
+ }
343
+ }
344
+ ```
345
+
346
+ ## 프로젝트 구조
347
+
348
+ ```
349
+ my-app/
350
+ ├── src/
351
+ │ └── routes/
352
+ ├── server/
353
+ │ └── api/
354
+ ├── nitro.config.ts
355
+ ├── vite.config.ts
356
+ ├── package.json
357
+ └── railway.json
358
+ ```
359
+
360
+ ## 참고 자료
361
+
362
+ - [Railway 공식 문서](https://docs.railway.app)
363
+ - [Railway CLI](https://docs.railway.app/reference/cli-api)
364
+ - [Nitro Node Server Preset](https://nitro.build/deploy/providers/node)
@@ -0,0 +1,287 @@
1
+ # Vercel 배포
2
+
3
+ > **상위 문서**: [배포](./index.md)
4
+
5
+ Vercel은 TanStack Start 앱을 위한 최적화된 배포 플랫폼입니다.
6
+
7
+ ## 빠른 시작
8
+
9
+ ### 1. Nitro 설정
10
+
11
+ ```typescript
12
+ // nitro.config.ts
13
+ import { defineNitroConfig } from 'nitro/config'
14
+
15
+ export default defineNitroConfig({
16
+ preset: 'vercel',
17
+ })
18
+ ```
19
+
20
+ ### 2. 빌드 및 배포
21
+
22
+ ```bash
23
+ # 빌드
24
+ yarn build
25
+
26
+ # Vercel CLI로 배포
27
+ vercel
28
+ ```
29
+
30
+ ## Vercel 설정
31
+
32
+ ### vercel.json
33
+
34
+ ```json
35
+ {
36
+ "$schema": "https://openapi.vercel.sh/vercel.json",
37
+ "buildCommand": "yarn build",
38
+ "outputDirectory": ".output",
39
+ "framework": null
40
+ }
41
+ ```
42
+
43
+ ### 환경변수
44
+
45
+ Vercel 대시보드에서 설정하거나 CLI 사용:
46
+
47
+ ```bash
48
+ # 환경변수 추가
49
+ vercel env add DATABASE_URL
50
+
51
+ # 환경변수 확인
52
+ vercel env ls
53
+ ```
54
+
55
+ ## ISR (Incremental Static Regeneration)
56
+
57
+ ### 기본 ISR 설정
58
+
59
+ ```typescript
60
+ // nitro.config.ts
61
+ import { defineNitroConfig } from 'nitro/config'
62
+
63
+ export default defineNitroConfig({
64
+ preset: 'vercel',
65
+ routeRules: {
66
+ // 60초마다 재검증
67
+ '/products/**': {
68
+ isr: {
69
+ expiration: 60,
70
+ },
71
+ },
72
+ },
73
+ })
74
+ ```
75
+
76
+ ### On-Demand ISR
77
+
78
+ ```typescript
79
+ // nitro.config.ts
80
+ import { defineNitroConfig } from 'nitro/config'
81
+
82
+ export default defineNitroConfig({
83
+ preset: 'vercel',
84
+ vercel: {
85
+ config: {
86
+ bypassToken: process.env.VERCEL_BYPASS_TOKEN,
87
+ },
88
+ },
89
+ routeRules: {
90
+ '/products/**': {
91
+ isr: {
92
+ allowQuery: ['q'], // 쿼리 파라미터 허용
93
+ passQuery: true,
94
+ },
95
+ },
96
+ },
97
+ })
98
+ ```
99
+
100
+ ### ISR 재검증 트리거
101
+
102
+ ```typescript
103
+ // server/api/revalidate.ts
104
+ import { defineHandler, getHeader, createError } from 'nitro/h3'
105
+
106
+ export default defineHandler(async (event) => {
107
+ const token = getHeader(event, 'x-vercel-bypass-token')
108
+
109
+ if (token !== process.env.VERCEL_BYPASS_TOKEN) {
110
+ throw createError({ statusCode: 401 })
111
+ }
112
+
113
+ // 특정 경로 재검증
114
+ await $fetch('/__revalidate', {
115
+ method: 'POST',
116
+ body: { paths: ['/products/123'] },
117
+ })
118
+
119
+ return { revalidated: true }
120
+ })
121
+ ```
122
+
123
+ ## Bun 런타임
124
+
125
+ ### nitro.config.ts 설정
126
+
127
+ ```typescript
128
+ import { defineNitroConfig } from 'nitro/config'
129
+
130
+ export default defineNitroConfig({
131
+ preset: 'vercel',
132
+ vercel: {
133
+ functions: {
134
+ runtime: 'bun1.x',
135
+ },
136
+ },
137
+ })
138
+ ```
139
+
140
+ ### vercel.json 설정
141
+
142
+ ```json
143
+ {
144
+ "$schema": "https://openapi.vercel.sh/vercel.json",
145
+ "bunVersion": "1.x"
146
+ }
147
+ ```
148
+
149
+ ## Edge Functions
150
+
151
+ ### Edge 런타임 설정
152
+
153
+ ```typescript
154
+ // nitro.config.ts
155
+ import { defineNitroConfig } from 'nitro/config'
156
+
157
+ export default defineNitroConfig({
158
+ preset: 'vercel',
159
+ routeRules: {
160
+ '/api/edge/**': {
161
+ // Edge 런타임에서 실행
162
+ headers: {
163
+ 'x-vercel-edge': '1',
164
+ },
165
+ },
166
+ },
167
+ })
168
+ ```
169
+
170
+ ## 환경별 설정
171
+
172
+ ### 프리뷰 vs 프로덕션
173
+
174
+ ```typescript
175
+ // nitro.config.ts
176
+ import { defineNitroConfig } from 'nitro/config'
177
+
178
+ const isProduction = process.env.VERCEL_ENV === 'production'
179
+
180
+ export default defineNitroConfig({
181
+ preset: 'vercel',
182
+ routeRules: {
183
+ '/api/**': {
184
+ cors: !isProduction, // 개발 환경에서만 CORS 허용
185
+ },
186
+ },
187
+ })
188
+ ```
189
+
190
+ ## 모노레포 설정
191
+
192
+ ### vercel.json
193
+
194
+ ```json
195
+ {
196
+ "$schema": "https://openapi.vercel.sh/vercel.json",
197
+ "installCommand": "yarn install",
198
+ "buildCommand": "yarn workspace web build",
199
+ "outputDirectory": "apps/web/.output"
200
+ }
201
+ ```
202
+
203
+ ## GitHub 통합
204
+
205
+ ### 자동 배포 설정
206
+
207
+ 1. Vercel 대시보드에서 GitHub 저장소 연결
208
+ 2. 브랜치별 배포 설정:
209
+ - `main` → 프로덕션
210
+ - `develop` → 프리뷰
211
+ - PR → 프리뷰 배포
212
+
213
+ ### vercel.json 브랜치 설정
214
+
215
+ ```json
216
+ {
217
+ "$schema": "https://openapi.vercel.sh/vercel.json",
218
+ "git": {
219
+ "deploymentEnabled": {
220
+ "main": true,
221
+ "develop": true
222
+ }
223
+ }
224
+ }
225
+ ```
226
+
227
+ ## 도메인 설정
228
+
229
+ ```bash
230
+ # 커스텀 도메인 추가
231
+ vercel domains add example.com
232
+
233
+ # DNS 설정 확인
234
+ vercel domains inspect example.com
235
+ ```
236
+
237
+ ## 트러블슈팅
238
+
239
+ ### 빌드 실패
240
+
241
+ ```bash
242
+ # 로컬에서 Vercel 빌드 시뮬레이션
243
+ vercel build
244
+
245
+ # 상세 로그 확인
246
+ vercel logs [deployment-url]
247
+ ```
248
+
249
+ ### Function 크기 초과
250
+
251
+ ```typescript
252
+ // nitro.config.ts
253
+ export default defineNitroConfig({
254
+ preset: 'vercel',
255
+ // 외부 패키지로 분리
256
+ externals: ['@prisma/client', 'sharp'],
257
+ })
258
+ ```
259
+
260
+ ### 환경변수 누락
261
+
262
+ ```bash
263
+ # 환경변수 풀 다운
264
+ vercel env pull .env.local
265
+ ```
266
+
267
+ ## 유용한 명령어
268
+
269
+ ```bash
270
+ # 프로덕션 배포
271
+ vercel --prod
272
+
273
+ # 특정 프로젝트로 배포
274
+ vercel --scope my-team
275
+
276
+ # 배포 목록 확인
277
+ vercel ls
278
+
279
+ # 배포 롤백
280
+ vercel rollback [deployment-url]
281
+ ```
282
+
283
+ ## 참고 자료
284
+
285
+ - [Vercel 공식 문서](https://vercel.com/docs)
286
+ - [Vercel CLI](https://vercel.com/docs/cli)
287
+ - [Nitro Vercel Preset](https://nitro.build/deploy/providers/vercel)