@daawoonkim/create-arch-app 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 (42) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +267 -0
  3. package/TESTING.md +224 -0
  4. package/bin/cli.js +4 -0
  5. package/create-arch-app_mvp_faa8b53b.plan.md +454 -0
  6. package/dist/commands/create.d.ts +2 -0
  7. package/dist/commands/create.d.ts.map +1 -0
  8. package/dist/commands/create.js +63 -0
  9. package/dist/commands/create.js.map +1 -0
  10. package/dist/generators/index.d.ts +3 -0
  11. package/dist/generators/index.d.ts.map +1 -0
  12. package/dist/generators/index.js +221 -0
  13. package/dist/generators/index.js.map +1 -0
  14. package/dist/generators/nextjs.d.ts +3 -0
  15. package/dist/generators/nextjs.d.ts.map +1 -0
  16. package/dist/generators/nextjs.js +253 -0
  17. package/dist/generators/nextjs.js.map +1 -0
  18. package/dist/generators/react.d.ts +3 -0
  19. package/dist/generators/react.d.ts.map +1 -0
  20. package/dist/generators/react.js +210 -0
  21. package/dist/generators/react.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +14 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/prompts/projectSetup.d.ts +3 -0
  27. package/dist/prompts/projectSetup.d.ts.map +1 -0
  28. package/dist/prompts/projectSetup.js +110 -0
  29. package/dist/prompts/projectSetup.js.map +1 -0
  30. package/dist/types.d.ts +22 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/types.js +2 -0
  33. package/dist/types.js.map +1 -0
  34. package/dist/utils/dependencies.d.ts +5 -0
  35. package/dist/utils/dependencies.d.ts.map +1 -0
  36. package/dist/utils/dependencies.js +90 -0
  37. package/dist/utils/dependencies.js.map +1 -0
  38. package/dist/utils/fileSystem.d.ts +5 -0
  39. package/dist/utils/fileSystem.d.ts.map +1 -0
  40. package/dist/utils/fileSystem.js +23 -0
  41. package/dist/utils/fileSystem.js.map +1 -0
  42. package/package.json +51 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 create-arch-app contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,267 @@
1
+ # create-arch-app
2
+
3
+ DDD, Clean Architecture, Atomic Design을 지원하는 대화형 React/Next.js 프로젝트 생성 CLI 도구
4
+
5
+ ## 특징
6
+
7
+ ✨ **4가지 아키텍처 패턴 지원**
8
+ - DDD (Domain-Driven Design)
9
+ - Clean Architecture
10
+ - Atomic Design
11
+ - Default (기본 구조)
12
+
13
+ 🚀 **프레임워크 선택**
14
+ - React (with Vite)
15
+ - Next.js (App Router / Pages Router)
16
+
17
+ 💎 **TypeScript 기본 포함**
18
+
19
+ 🎨 **스타일링 옵션**
20
+ - Tailwind CSS
21
+ - CSS Modules
22
+
23
+ 📦 **선택 가능한 라이브러리**
24
+ - 상태관리: Zustand, Context API
25
+ - 폼: React Hook Form
26
+ - 테스팅: Vitest + Testing Library
27
+
28
+ ## 설치 및 사용법
29
+
30
+ ### npx로 즉시 사용 (권장)
31
+
32
+ ```bash
33
+ # 새 디렉토리에 프로젝트 생성
34
+ npx @daawoonkim/create-arch-app my-app
35
+
36
+ # 또는 현재 디렉토리에 직접 생성
37
+ npx @daawoonkim/create-arch-app .
38
+ ```
39
+
40
+ ### 전역 설치
41
+
42
+ ```bash
43
+ npm install -g @daawoonkim/create-arch-app
44
+
45
+ # 새 디렉토리에 프로젝트 생성
46
+ create-arch-app my-app
47
+
48
+ # 현재 디렉토리에 직접 생성
49
+ create-arch-app .
50
+ ```
51
+
52
+ > **참고**: 현재 디렉토리(`.`)를 사용하려면 디렉토리가 비어있어야 합니다.
53
+
54
+ ### 대화형 프롬프트
55
+
56
+ CLI를 실행하면 다음 질문들에 답하게 됩니다:
57
+
58
+ 1. **프레임워크 선택**: React 또는 Next.js
59
+ 2. **Next.js 버전 선택** (Next.js만 해당): Latest (권장), 15.x, 14.x, 13.x
60
+ 3. **라우터 선택** (Next.js만 해당): App Router (권장) 또는 Pages Router
61
+ 4. **아키텍처 패턴**: DDD, Clean, Atomic, Default
62
+ 5. **스타일링 도구**: Tailwind CSS 또는 CSS Modules
63
+ 6. **상태관리**: Zustand, Context API, None
64
+ 7. **폼 라이브러리**: React Hook Form 또는 None
65
+ 8. **테스팅 도구**: Vitest + Testing Library 포함 여부
66
+
67
+ ## 사용 예시
68
+
69
+ ```bash
70
+ npx @daawoonkim/create-arch-app my-enterprise-app
71
+
72
+ # 대화형 프롬프트
73
+ ? 프레임워크를 선택하세요: Next.js
74
+ ? Next.js 버전을 선택하세요: Latest (최신 버전, 권장)
75
+ ? Next.js 라우터를 선택하세요: App Router (권장)
76
+ ? 아키텍처 패턴을 선택하세요: DDD (Domain-Driven Design)
77
+ ? 스타일링 도구를 선택하세요: Tailwind CSS
78
+ ? 상태관리 라이브러리를 선택하세요: Zustand
79
+ ? 폼 라이브러리를 선택하세요: React Hook Form
80
+ ? 테스팅 도구를 포함하시겠습니까? Yes
81
+
82
+ ✨ 프로젝트 생성 중...
83
+ 📦 TypeScript 프로젝트로 설정됩니다 (기본값)
84
+ 🚀 Next.js App Router 사용
85
+ ✅ 프로젝트 생성 완료!
86
+
87
+ 🎉 프로젝트가 성공적으로 생성되었습니다!
88
+
89
+ 다음 명령어로 시작하세요:
90
+ cd my-enterprise-app
91
+ npm install
92
+ npm run dev
93
+ ```
94
+
95
+ ## 아키텍처 패턴 설명
96
+
97
+ ### DDD (Domain-Driven Design)
98
+
99
+ 엔터프라이즈급 애플리케이션에 적합한 패턴입니다.
100
+
101
+ ```
102
+ domain/ # 비즈니스 엔티티와 로직
103
+ ├── entities/
104
+ ├── repositories/
105
+ └── services/
106
+ application/ # 유스케이스
107
+ ├── usecases/
108
+ └── ports/
109
+ infrastructure/ # 외부 서비스 통합
110
+ ├── api/
111
+ └── persistence/
112
+ presentation/ # UI 컴포넌트
113
+ ├── components/
114
+ └── pages/
115
+ ```
116
+
117
+ ### Clean Architecture
118
+
119
+ 의존성 규칙과 레이어 분리에 중점을 둔 패턴입니다.
120
+
121
+ ```
122
+ core/ # 비즈니스 로직
123
+ ├── entities/
124
+ ├── usecases/
125
+ └── interfaces/
126
+ features/ # 기능별 모듈
127
+ └── [feature]/
128
+ ├── domain/
129
+ ├── data/
130
+ └── presentation/
131
+ shared/ # 공통 컴포넌트
132
+ ├── components/
133
+ └── utils/
134
+ ```
135
+
136
+ ### Atomic Design
137
+
138
+ UI 컴포넌트 중심 개발에 최적화된 패턴입니다.
139
+
140
+ ```
141
+ components/
142
+ ├── atoms/ # 가장 작은 UI 단위
143
+ ├── molecules/ # atoms 조합
144
+ ├── organisms/ # molecules 조합
145
+ ├── templates/ # 페이지 레이아웃
146
+ └── pages/ # 실제 페이지
147
+ hooks/
148
+ utils/
149
+ ```
150
+
151
+ ### Default
152
+
153
+ 빠른 시작을 원하는 개발자를 위한 기본 구조입니다.
154
+
155
+ ```
156
+ components/
157
+ hooks/
158
+ pages/ (또는 app/)
159
+ utils/
160
+ styles/
161
+ types/
162
+ ```
163
+
164
+ ## 생성되는 파일 구조
165
+
166
+ ### React 프로젝트
167
+
168
+ ```
169
+ my-app/
170
+ ├── src/
171
+ │ ├── [architecture folders]
172
+ │ ├── App.tsx
173
+ │ ├── main.tsx
174
+ │ └── index.css
175
+ ├── index.html
176
+ ├── vite.config.ts
177
+ ├── tsconfig.json
178
+ ├── package.json
179
+ └── README.md
180
+ ```
181
+
182
+ ### Next.js 프로젝트 (App Router)
183
+
184
+ ```
185
+ my-app/
186
+ ├── app/
187
+ │ ├── layout.tsx
188
+ │ ├── page.tsx
189
+ │ └── globals.css
190
+ ├── [architecture folders]
191
+ ├── next.config.js
192
+ ├── tsconfig.json
193
+ ├── package.json
194
+ └── README.md
195
+ ```
196
+
197
+ ### Next.js 프로젝트 (Pages Router)
198
+
199
+ ```
200
+ my-app/
201
+ ├── pages/
202
+ │ ├── _app.tsx
203
+ │ ├── _document.tsx
204
+ │ └── index.tsx
205
+ ├── styles/
206
+ │ └── globals.css
207
+ ├── [architecture folders]
208
+ ├── next.config.js
209
+ ├── tsconfig.json
210
+ ├── package.json
211
+ └── README.md
212
+ ```
213
+
214
+ ## 요구 사항
215
+
216
+ - Node.js 18.0.0 이상
217
+
218
+ ## 개발
219
+
220
+ 이 프로젝트를 로컬에서 개발하려면:
221
+
222
+ ```bash
223
+ # 저장소 클론
224
+ git clone git@github.com:hec8897/create-arch-app.git
225
+ cd create-arch-app
226
+
227
+ # 의존성 설치
228
+ npm install
229
+
230
+ # TypeScript 컴파일
231
+ npm run build
232
+
233
+ # 로컬 링크 생성
234
+ npm link
235
+
236
+ # 테스트
237
+ cd ~/test-project
238
+ create-arch-app my-test-app
239
+ ```
240
+
241
+ ## 로드맵
242
+
243
+ - [ ] 추가 아키텍처 패턴 (Feature-Sliced Design, Hexagonal Architecture)
244
+ - [ ] UI 라이브러리 통합 (shadcn/ui, MUI, Ant Design)
245
+ - [ ] 추가 상태관리 옵션 (Redux Toolkit, Jotai, Recoil)
246
+ - [ ] 인증 통합 (NextAuth, Supabase)
247
+ - [ ] ORM 통합 (Prisma, Drizzle)
248
+ - [ ] 컴포넌트 생성기
249
+ - [ ] CI/CD 설정 자동화
250
+ - [ ] Docker 설정 포함
251
+ - [ ] Monorepo 지원 (Turborepo)
252
+
253
+ ## 기여하기
254
+
255
+ 버그 리포트, 기능 제안, PR 모두 환영합니다!
256
+
257
+ ## 라이선스
258
+
259
+ MIT
260
+
261
+ ## 작성자
262
+
263
+ daawoonkim
264
+
265
+ ## 참고
266
+
267
+ 이 프로젝트는 현대적인 프론트엔드 개발 모범 사례와 다양한 아키텍처 패턴을 기반으로 합니다.
package/TESTING.md ADDED
@@ -0,0 +1,224 @@
1
+ # 테스트 가이드
2
+
3
+ ## 로컬 테스트 방법
4
+
5
+ ### 1. 준비
6
+
7
+ ```bash
8
+ cd /Users/dawoon/create-arch-app
9
+ npm run build
10
+ npm link
11
+ ```
12
+
13
+ ### 2. 테스트 디렉토리 생성
14
+
15
+ ```bash
16
+ mkdir -p ~/test-create-arch-app
17
+ cd ~/test-create-arch-app
18
+ ```
19
+
20
+ ### 3. 주요 조합 테스트
21
+
22
+ 다음 조합들을 테스트하여 정상 작동을 확인합니다:
23
+
24
+ #### 테스트 0: 현재 디렉토리에 생성 (`.` 옵션)
25
+
26
+ ```bash
27
+ mkdir test-current-dir && cd test-current-dir
28
+ create-arch-app .
29
+
30
+ # 프롬프트 선택:
31
+ # - Framework: React (with Vite)
32
+ # - Architecture: Default
33
+ # - Styling: Tailwind CSS
34
+ # - State: None
35
+ # - Form: None
36
+ # - Testing: No
37
+
38
+ npm install
39
+ npm run dev
40
+
41
+ # ✅ 현재 디렉토리에 직접 파일들이 생성되었는지 확인
42
+ # ✅ 불필요한 중첩 폴더가 없는지 확인
43
+ cd ..
44
+ ```
45
+
46
+ #### 테스트 1: React + DDD + Tailwind
47
+
48
+ ```bash
49
+ create-arch-app test-react-ddd
50
+
51
+ # 프롬프트 선택:
52
+ # - Framework: React (with Vite)
53
+ # - Architecture: DDD
54
+ # - Styling: Tailwind CSS
55
+ # - State: Zustand
56
+ # - Form: React Hook Form
57
+ # - Testing: Yes
58
+
59
+ cd test-react-ddd
60
+ npm install
61
+ npm run dev
62
+
63
+ # ✅ 개발 서버가 정상 실행되는지 확인
64
+ # ✅ http://localhost:5173 접속하여 화면 확인
65
+ ```
66
+
67
+ #### 테스트 2: Next.js + App Router + Clean Architecture
68
+
69
+ ```bash
70
+ create-arch-app test-nextjs-app-clean
71
+
72
+ # 프롬프트 선택:
73
+ # - Framework: Next.js
74
+ # - Next.js Version: Latest (최신 버전, 권장)
75
+ # - Router: App Router (권장)
76
+ # - Architecture: Clean Architecture
77
+ # - Styling: Tailwind CSS
78
+ # - State: Context API
79
+ # - Form: None
80
+ # - Testing: Yes
81
+
82
+ cd test-nextjs-app-clean
83
+ npm install
84
+ npm run dev
85
+
86
+ # ✅ 개발 서버가 정상 실행되는지 확인
87
+ # ✅ http://localhost:3000 접속하여 화면 확인
88
+ ```
89
+
90
+ #### 테스트 3: Next.js + Pages Router + Atomic Design
91
+
92
+ ```bash
93
+ create-arch-app test-nextjs-pages-atomic
94
+
95
+ # 프롬프트 선택:
96
+ # - Framework: Next.js
97
+ # - Next.js Version: 14.x
98
+ # - Router: Pages Router
99
+ # - Architecture: Atomic Design
100
+ # - Styling: CSS Modules
101
+ # - State: None
102
+ # - Form: None
103
+ # - Testing: No
104
+
105
+ cd test-nextjs-pages-atomic
106
+ npm install
107
+ npm run dev
108
+
109
+ # ✅ 개발 서버가 정상 실행되는지 확인
110
+ # ✅ http://localhost:3000 접속하여 화면 확인
111
+ ```
112
+
113
+ #### 테스트 4: React + Default + CSS Modules
114
+
115
+ ```bash
116
+ create-arch-app test-react-default
117
+
118
+ # 프롬프트 선택:
119
+ # - Framework: React (with Vite)
120
+ # - Architecture: Default
121
+ # - Styling: CSS Modules
122
+ # - State: None
123
+ # - Form: None
124
+ # - Testing: No
125
+
126
+ cd test-react-default
127
+ npm install
128
+ npm run dev
129
+
130
+ # ✅ 개발 서버가 정상 실행되는지 확인
131
+ # ✅ http://localhost:5173 접속하여 화면 확인
132
+ ```
133
+
134
+ ### 4. 체크리스트
135
+
136
+ 각 테스트 프로젝트에서 다음 사항들을 확인합니다:
137
+
138
+ - [ ] 프로젝트 폴더가 정상 생성됨
139
+ - [ ] package.json에 올바른 의존성이 포함됨
140
+ - [ ] tsconfig.json이 생성됨
141
+ - [ ] 선택한 아키텍처에 맞는 폴더 구조가 생성됨
142
+ - [ ] `npm install`이 오류 없이 완료됨
143
+ - [ ] TypeScript 컴파일 오류가 없음
144
+ - [ ] `npm run dev`로 개발 서버가 실행됨
145
+ - [ ] 브라우저에서 화면이 정상 표시됨
146
+ - [ ] README.md에 프로젝트 정보가 올바르게 표시됨
147
+ - [ ] Tailwind CSS 선택 시 스타일이 적용됨
148
+ - [ ] 테스팅 옵션 선택 시 테스트 설정이 포함됨
149
+
150
+ ### 5. 빌드 테스트
151
+
152
+ ```bash
153
+ npm run build
154
+ ```
155
+
156
+ - [ ] 프로덕션 빌드가 오류 없이 완료됨
157
+ - [ ] 빌드 결과물이 생성됨 (React: dist/, Next.js: .next/)
158
+
159
+ ### 6. 테스트 후 정리
160
+
161
+ ```bash
162
+ cd ~/test-create-arch-app
163
+ rm -rf test-*
164
+ ```
165
+
166
+ ## 자동화된 테스트 (향후 추가)
167
+
168
+ 향후 다음과 같은 자동화된 테스트를 추가할 예정입니다:
169
+
170
+ - E2E 테스트 (Playwright)
171
+ - 스냅샷 테스트
172
+ - 생성된 프로젝트의 린트 검사
173
+ - 모든 조합에 대한 자동 생성 및 빌드 테스트
174
+
175
+ ## 문제 해결
176
+
177
+ ### 문제: npm link 후 명령어를 찾을 수 없음
178
+
179
+ ```bash
180
+ npm unlink -g create-arch-app
181
+ cd /Users/dawoon/create-arch-app
182
+ npm link
183
+ ```
184
+
185
+ ### 문제: 포트가 이미 사용 중
186
+
187
+ 다른 포트로 실행:
188
+
189
+ ```bash
190
+ # React (Vite)
191
+ npm run dev -- --port 5174
192
+
193
+ # Next.js
194
+ npm run dev -- -p 3001
195
+ ```
196
+
197
+ ### 문제: TypeScript 오류
198
+
199
+ 생성된 프로젝트에서:
200
+
201
+ ```bash
202
+ # node_modules 삭제 후 재설치
203
+ rm -rf node_modules package-lock.json
204
+ npm install
205
+ ```
206
+
207
+ ## 테스트 결과 보고
208
+
209
+ 테스트 중 발견한 문제는 다음 정보와 함께 보고해주세요:
210
+
211
+ 1. 선택한 옵션 조합
212
+ 2. 오류 메시지
213
+ 3. 실행 환경 (OS, Node 버전)
214
+ 4. 재현 방법
215
+
216
+ ## 성능 테스트
217
+
218
+ 프로젝트 생성 시간을 측정합니다:
219
+
220
+ ```bash
221
+ time create-arch-app test-perf
222
+ ```
223
+
224
+ - 목표: 10초 이내 (의존성 설치 제외)
package/bin/cli.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ // ES Module을 사용하므로 dist/index.js를 import
4
+ import '../dist/index.js';